0

是否可以创建一个复合函数,以便消费者可以提供对函数的引用?在 mixins 中,只要消费者方法存在,您就可以调用它。这是我认为这会起作用的方式,但事实并非如此。方法 1 不是反应式的。我意识到这可能是一种反模式。有时您运行 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,
  };
}
4

1 回答 1

1

method1已经是一个 ref 并被这样使用。如果它被重新定义,这应该像这样完成:

  method1.value = (o) => ...

这绝对是一种反模式。可能有多个回调,但仅限于一个。更完整的解决方案可以使用类似事件总线mitt并为事件注册处理程序。

使用组合 API 的适当解决方案将涉及观察者。这里没有什么需要组合 API。它只是基于回调的控制流,是基于 Promise 的控制流。如果method2是异步的,它需要返回一个 Promise 并被链接到它使用的地方:

 const method1 = (o) => ...
 method2().then(method1);
于 2022-02-05T08:59:18.550 回答