我想将一个函数从现有的vue 3组件提取到一个可在多个组件中使用的可组合函数中。
在我的vue组件中,我使用一个函数来设置ref变量 reset
到 true
或 false
(由单击触发)。
当前解决方案:
更改重置变量的功能位于设置功能中。很好。
组成部分
// Vue3Component.vue
<script lang="ts">
import { ref, defineComponent } from "vue";
export default defineComponent({
setup() {
const reset = ref(false);
// Triggered by click
function updatePaginatedPage(paginaValue: {
resetState: boolean;
}) {
// Sets reset to true or false
reset.value = paginaValue.resetState;
}
}
}
})
</script>
因为我需要在另一个vue组件中使用该功能,所以我想将该功能放在一个钩子文件中。
理想的解决方案:
将从文件导入的重置变量更改为设置函数的函数。我不知道如何将值分配给变量(以及更多正在使用的东西UpdatePaginatedPage()),以便将新值分配给组件中的重置变量。
组成部分:
// Vue3Component.vue
<script lang="ts">
import { ref, defineComponent } from "vue";
import { useUpdatePaginatedPage } from "@/hooks/updatePaginatedPage";
export default defineComponent({
const reset = ref(false);
// function from hook (below)
useUpdatePaginatedPage({ resetState: false });
})
</script>
钩子/可组合函数
// updatePaginatedPage.ts
export const useUpdatePaginatedPage = function(paginaValue: {
currentPage: number;
resetState: boolean;
}, reset: any) {
reset.value = paginaValue.resetState;
}
我不知道该怎么处理。我e、 ,如何重新分配 reset.value
从updatepaginatedpage。我可以把它当作论点,但那又怎样呢?我是否应该返回该值,并通过组件中的另一个函数将其赋值?
1条答案
按热度按时间wtzytmuj1#
首先,我认为您目前的解决方案缺失
return { reset, updatePaginatedPage }
(使这些值/函数在模板中可用)如果你看一下
setup()
这个reset
变量是函数的局部变量。为了使其可重用,您需要再次使其成为某个函数的局部变量——比方说usePagination
-每次从setup()
在某些组件中,新的本地reset
变量和updatePaginatedPage
将创建绑定到该变量的。。。从某种意义上说,您所需要的重构只是将整个
setup()
函数,将其重命名为其他内容并将其存储在自己的文件中。。。让我们看一下代码:
然后在某些组件中使用它。。。