44 lines
1.2 KiB
TypeScript
44 lines
1.2 KiB
TypeScript
import { defineComponent, ref, unref } from 'vue';
|
||
import { Card, Typography, Select } from 'ant-design-vue';
|
||
import { imitateApi } from './mock-api';
|
||
import { useRequest } from '@vben/hooks';
|
||
import { PageWrapper } from '@/components/Page';
|
||
|
||
const options = [
|
||
{ label: 'Jack', value: 'Jack' },
|
||
{ label: 'Lucy', value: 'Lucy' },
|
||
{ label: 'Lutz', value: 'Lutz' },
|
||
];
|
||
|
||
const Demo1 = defineComponent({
|
||
setup() {
|
||
const select = ref('Lutz');
|
||
const { data, loading } = useRequest(() => imitateApi(select.value), { refreshDeps: [select] });
|
||
|
||
return () => (
|
||
<Card title="依赖刷新">
|
||
<Typography>
|
||
<Typography.Paragraph>
|
||
useRequest 提供了一个
|
||
<Typography.Text type="danger"> options.refreshDeps </Typography.Text>
|
||
参数,当它的值变化后,会重新触发请求。
|
||
</Typography.Paragraph>
|
||
</Typography>
|
||
|
||
<Select v-model={[select.value, 'value']} options={options} style="width: 220px" />
|
||
<p>Username: {loading.value ? 'Loading' : unref(data)}</p>
|
||
</Card>
|
||
);
|
||
},
|
||
});
|
||
|
||
export default defineComponent({
|
||
setup() {
|
||
return () => (
|
||
<PageWrapper>
|
||
<Demo1 />
|
||
</PageWrapper>
|
||
);
|
||
},
|
||
});
|