mirror of
https://gitee.com/vant-contrib/vant.git
synced 2025-04-23 18:00:27 +08:00
docs(Tabs): use composition api
This commit is contained in:
parent
6ca5a63d34
commit
714f0f0d1a
@ -26,11 +26,12 @@ The first tab is actived by default, you can set `v-model:active` to active spec
|
|||||||
```
|
```
|
||||||
|
|
||||||
```js
|
```js
|
||||||
|
import { ref } from 'vue';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
data() {
|
setup() {
|
||||||
return {
|
const active = ref(2);
|
||||||
active: 2,
|
return { active };
|
||||||
};
|
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
```
|
```
|
||||||
@ -46,11 +47,12 @@ export default {
|
|||||||
```
|
```
|
||||||
|
|
||||||
```js
|
```js
|
||||||
|
import { ref } from 'vue';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
data() {
|
setup() {
|
||||||
return {
|
const activeName = ref('a');
|
||||||
activeName: 'a',
|
return { activeName };
|
||||||
};
|
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
```
|
```
|
||||||
@ -83,10 +85,14 @@ You can set `disabled` attribute on the corresponding `van-tab`.
|
|||||||
import { Toast } from 'vant';
|
import { Toast } from 'vant';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
methods: {
|
setup() {
|
||||||
onClickDisabled(name, title) {
|
const onClickDisabled = (name, title) => {
|
||||||
Toast(title + ' is disabled');
|
Toast(name + ' is disabled');
|
||||||
},
|
};
|
||||||
|
|
||||||
|
return {
|
||||||
|
onClickDisabled,
|
||||||
|
};
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
```
|
```
|
||||||
@ -117,10 +123,14 @@ Tabs styled as cards.
|
|||||||
import { Toast } from 'vant';
|
import { Toast } from 'vant';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
methods: {
|
setup() {
|
||||||
onClick(name, title) {
|
const onClick = (name, title) => {
|
||||||
Toast(title);
|
Toast(title);
|
||||||
},
|
};
|
||||||
|
|
||||||
|
return {
|
||||||
|
onClick,
|
||||||
|
};
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
```
|
```
|
||||||
@ -198,8 +208,8 @@ In scrollspy mode, the list of content will be tiled.
|
|||||||
|
|
||||||
```js
|
```js
|
||||||
export default {
|
export default {
|
||||||
methods: {
|
setup() {
|
||||||
beforeChange(index) {
|
const beforeChange = (index) => {
|
||||||
// prevent change
|
// prevent change
|
||||||
if (index === 1) {
|
if (index === 1) {
|
||||||
return false;
|
return false;
|
||||||
@ -209,7 +219,11 @@ export default {
|
|||||||
return new Promise((resolve) => {
|
return new Promise((resolve) => {
|
||||||
resolve(index !== 3);
|
resolve(index !== 3);
|
||||||
});
|
});
|
||||||
},
|
};
|
||||||
|
|
||||||
|
return {
|
||||||
|
beforeChange,
|
||||||
|
};
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
```
|
```
|
||||||
|
@ -27,11 +27,12 @@ app.use(Tabs);
|
|||||||
```
|
```
|
||||||
|
|
||||||
```js
|
```js
|
||||||
|
import { ref } from 'vue';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
data() {
|
setup() {
|
||||||
return {
|
const active = ref(2);
|
||||||
active: 2,
|
return { active };
|
||||||
};
|
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
```
|
```
|
||||||
@ -49,11 +50,12 @@ export default {
|
|||||||
```
|
```
|
||||||
|
|
||||||
```js
|
```js
|
||||||
|
import { ref } from 'vue';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
data() {
|
setup() {
|
||||||
return {
|
const activeName = ref('a');
|
||||||
activeName: 'a',
|
return { activeName };
|
||||||
};
|
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
```
|
```
|
||||||
@ -86,10 +88,14 @@ export default {
|
|||||||
import { Toast } from 'vant';
|
import { Toast } from 'vant';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
methods: {
|
setup() {
|
||||||
onClickDisabled(name, title) {
|
const onClickDisabled = (name, title) => {
|
||||||
Toast(name + '已被禁用');
|
Toast(name + '已被禁用');
|
||||||
},
|
};
|
||||||
|
|
||||||
|
return {
|
||||||
|
onClickDisabled,
|
||||||
|
};
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
```
|
```
|
||||||
@ -121,10 +127,14 @@ export default {
|
|||||||
import { Toast } from 'vant';
|
import { Toast } from 'vant';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
methods: {
|
setup() {
|
||||||
onClick(name, title) {
|
const onClick = (name, title) => {
|
||||||
Toast(title);
|
Toast(title);
|
||||||
},
|
};
|
||||||
|
|
||||||
|
return {
|
||||||
|
onClick,
|
||||||
|
};
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
```
|
```
|
||||||
@ -204,8 +214,8 @@ export default {
|
|||||||
|
|
||||||
```js
|
```js
|
||||||
export default {
|
export default {
|
||||||
methods: {
|
setup() {
|
||||||
beforeChange(index) {
|
const beforeChange = (index) => {
|
||||||
// 返回 false 表示阻止此次切换
|
// 返回 false 表示阻止此次切换
|
||||||
if (index === 1) {
|
if (index === 1) {
|
||||||
return false;
|
return false;
|
||||||
@ -216,7 +226,11 @@ export default {
|
|||||||
// 在 resolve 函数中返回 true 或 false
|
// 在 resolve 函数中返回 true 或 false
|
||||||
resolve(index !== 3);
|
resolve(index !== 3);
|
||||||
});
|
});
|
||||||
},
|
};
|
||||||
|
|
||||||
|
return {
|
||||||
|
beforeChange,
|
||||||
|
};
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
```
|
```
|
||||||
|
@ -102,68 +102,80 @@
|
|||||||
</demo-block>
|
</demo-block>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script lang="ts">
|
||||||
export default {
|
import { reactive, toRefs } from 'vue';
|
||||||
i18n: {
|
import { useTranslate } from '@demo/use-translate';
|
||||||
'zh-CN': {
|
import Toast from '../../toast';
|
||||||
tab: '标签 ',
|
|
||||||
title2: '标签栏滚动',
|
|
||||||
title3: '禁用标签',
|
|
||||||
title4: '样式风格',
|
|
||||||
title5: '点击事件',
|
|
||||||
title6: '粘性布局',
|
|
||||||
title7: '自定义标签',
|
|
||||||
title8: '切换动画',
|
|
||||||
title9: '滑动切换',
|
|
||||||
title10: '滚动导航',
|
|
||||||
disabled: ' 已被禁用',
|
|
||||||
matchByName: '通过名称匹配',
|
|
||||||
beforeChange: '异步切换',
|
|
||||||
},
|
|
||||||
'en-US': {
|
|
||||||
tab: 'Tab ',
|
|
||||||
content: 'content of tab',
|
|
||||||
title2: 'Swipe Tabs',
|
|
||||||
title3: 'Disabled Tab',
|
|
||||||
title4: 'Card Style',
|
|
||||||
title5: 'Click Event',
|
|
||||||
title6: 'Sticky',
|
|
||||||
title7: 'Custom Tab',
|
|
||||||
title8: 'Switch Animation',
|
|
||||||
title9: 'Swipeable',
|
|
||||||
title10: 'Scrollspy',
|
|
||||||
disabled: ' is disabled',
|
|
||||||
matchByName: 'Match By Name',
|
|
||||||
beforeChange: 'Before Change',
|
|
||||||
},
|
|
||||||
},
|
|
||||||
|
|
||||||
data() {
|
const i18n = {
|
||||||
return {
|
'zh-CN': {
|
||||||
|
tab: '标签 ',
|
||||||
|
title2: '标签栏滚动',
|
||||||
|
title3: '禁用标签',
|
||||||
|
title4: '样式风格',
|
||||||
|
title5: '点击事件',
|
||||||
|
title6: '粘性布局',
|
||||||
|
title7: '自定义标签',
|
||||||
|
title8: '切换动画',
|
||||||
|
title9: '滑动切换',
|
||||||
|
title10: '滚动导航',
|
||||||
|
disabled: ' 已被禁用',
|
||||||
|
matchByName: '通过名称匹配',
|
||||||
|
beforeChange: '异步切换',
|
||||||
|
},
|
||||||
|
'en-US': {
|
||||||
|
tab: 'Tab ',
|
||||||
|
content: 'content of tab',
|
||||||
|
title2: 'Swipe Tabs',
|
||||||
|
title3: 'Disabled Tab',
|
||||||
|
title4: 'Card Style',
|
||||||
|
title5: 'Click Event',
|
||||||
|
title6: 'Sticky',
|
||||||
|
title7: 'Custom Tab',
|
||||||
|
title8: 'Switch Animation',
|
||||||
|
title9: 'Swipeable',
|
||||||
|
title10: 'Scrollspy',
|
||||||
|
disabled: ' is disabled',
|
||||||
|
matchByName: 'Match By Name',
|
||||||
|
beforeChange: 'Before Change',
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
export default {
|
||||||
|
setup() {
|
||||||
|
const t = useTranslate(i18n);
|
||||||
|
const state = reactive({
|
||||||
active: 2,
|
active: 2,
|
||||||
activeName: 'b',
|
activeName: 'b',
|
||||||
tabs: [1, 2, 3, 4],
|
});
|
||||||
|
|
||||||
|
const tabs = [1, 2, 3, 4];
|
||||||
|
|
||||||
|
const onClick = (index: number, title: string) => {
|
||||||
|
Toast(title);
|
||||||
};
|
};
|
||||||
},
|
|
||||||
|
|
||||||
methods: {
|
const onClickDisabled = (index: number, title: string) => {
|
||||||
onClickDisabled(index, title) {
|
Toast(title + t('disabled'));
|
||||||
this.$toast(title + this.t('disabled'));
|
};
|
||||||
},
|
|
||||||
|
|
||||||
onClick(index, title) {
|
const beforeChange = (name: number) => {
|
||||||
this.$toast(title);
|
|
||||||
},
|
|
||||||
|
|
||||||
beforeChange(name) {
|
|
||||||
if (name === 1) {
|
if (name === 1) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return new Promise((resolve) => {
|
return new Promise((resolve) => {
|
||||||
resolve(name !== 3);
|
resolve(name !== 3);
|
||||||
});
|
});
|
||||||
},
|
};
|
||||||
|
|
||||||
|
return {
|
||||||
|
...toRefs(state),
|
||||||
|
t,
|
||||||
|
tabs,
|
||||||
|
onClick,
|
||||||
|
beforeChange,
|
||||||
|
onClickDisabled,
|
||||||
|
};
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user