初始 `reactive` 值为 null

sil*_*ilk 9 vue.js vuejs3

大家。我有一个关于使用的问题reactive。我知道状态的类型,但初始值为空。我如何使用分配?代码如下

//....
  let origin = reactive<Timeslot | {}>({});
  const handler = (data) => {
       Object.assign(origin, data);
  };
//..
Run Code Online (Sandbox Code Playgroud)

事实上,我想origin将的初始值赋给null。我该如何处理这个问题?

Psi*_*dom 9

您将无法分配null给反应式签名,因为反应式签名需要类型扩展对象

function reactive<T extends object>(target: T): UnwrapNestedRefs<T>
Run Code Online (Sandbox Code Playgroud)

话虽如此,为什么你想要一个空的反应性?null如果您使用甚至是空对象初始化反应性对象(即使这是可能的),您将无法从 vue 的反应性系统中受益,因为在这种情况下您不会跟踪任何内容。

也许你需要的是一个裁判?您可以使用可为空的联合类型使 ref 可为空,如下所示。

let origin = ref<Timeslot | null>(null);
Run Code Online (Sandbox Code Playgroud)

  • 在这种情况下,时间段的属性会起反应吗?不应该对对象使用reactive()吗? (4认同)