我有一个Vue3组件,其中setup()
定义了以下函数:
const writeNote(note: Ref<Note>) => { console.log(`note ${note.id}` }
接收Ref<Note>
,Note
为接口。
这个函数在两种情况下调用:
<template>
中的- 来自组件(
@modified-note='writeNote'
)的事件,因此传递给函数的是引用 - 在
setup()
中的一个函数中,检索Note
类型的元素并将它们传递给writeNote
。在这种情况下传递的是"naked"variable"(非参考)
如何解决这个矛盾?
- 在模板中的调用中,以某种方式"取消引用"。发送的是什么?(在这种情况下,我会将函数中的参数类型修改为裸
Note
) - 在
setup()
的函数调用中,通过某种方式将正常变量转换为这个调用的引用?
您可以使用Vue的unref
:
const writeNote(_note: Ref<Note> | Note) => {
const note = unref(_note);
console.log(`note ${note.id}`);
}
或者你必须在传递给writeNote
时创建一个反应性变量,正如你在问题中所描述的那样。这个解决方案更简洁一些,但需要更改writeNote
的签名和