Vue 复合使函数具有反应性?
Vue composite make function reactive?
是否可以创建一个复合函数,以便消费者可以提供对函数的引用?在 mixin 中,只要它存在,你就可以调用消费者方法。这是我认为这会起作用但不起作用的方法。 method1 不是反应性的。我意识到这可能是一种反模式。有时你 运行 一个 async/ajax 调用,一旦完成,最好只 运行 回调方法 1 而不是更改虚拟值并 运行 在它上面监视消费者。想法?
-- 消费组件
setup() {
let { prop1, method1, method2 } = useComposite();
method1 = (o) =>
{
console.log(o);
};
method2();
}
可组合函数 --
export default function useComposite()
{
let method1 = ref(()=>{});
const method2 = () =>
{
method1.value("hello");
};
const prop1 = ref(o);
return {
method1,
methoid2,
prop1,
};
}
method1
已经是 ref 并按原样使用。如果它被重新定义,这应该像这样完成:
method1.value = (o) => ...
这绝对是一个反模式。可以有多个回调,但仅限于一个。更完整的解决方案可以使用像 mitt
这样的事件总线并为事件注册处理程序。
具有组合 API 的适当解决方案将涉及观察者。这里不需要组合 API。它只是 callback-based 控制流程和 promise-based 流程的后退一步。如果 method2
是异步的,它需要 return 一个 promise 并被链接到它被使用的地方:
const method1 = (o) => ...
method2().then(method1);
是否可以创建一个复合函数,以便消费者可以提供对函数的引用?在 mixin 中,只要它存在,你就可以调用消费者方法。这是我认为这会起作用但不起作用的方法。 method1 不是反应性的。我意识到这可能是一种反模式。有时你 运行 一个 async/ajax 调用,一旦完成,最好只 运行 回调方法 1 而不是更改虚拟值并 运行 在它上面监视消费者。想法?
-- 消费组件
setup() {
let { prop1, method1, method2 } = useComposite();
method1 = (o) =>
{
console.log(o);
};
method2();
}
可组合函数 --
export default function useComposite()
{
let method1 = ref(()=>{});
const method2 = () =>
{
method1.value("hello");
};
const prop1 = ref(o);
return {
method1,
methoid2,
prop1,
};
}
method1
已经是 ref 并按原样使用。如果它被重新定义,这应该像这样完成:
method1.value = (o) => ...
这绝对是一个反模式。可以有多个回调,但仅限于一个。更完整的解决方案可以使用像 mitt
这样的事件总线并为事件注册处理程序。
具有组合 API 的适当解决方案将涉及观察者。这里不需要组合 API。它只是 callback-based 控制流程和 promise-based 流程的后退一步。如果 method2
是异步的,它需要 return 一个 promise 并被链接到它被使用的地方:
const method1 = (o) => ...
method2().then(method1);