我想初始化一个没有值的reactive
变量。我试过:
const workspaceReact = reactive(null) // wrong! it is seems value null can not being passed to reactive()
因此,我尝试了下面的代码,它似乎是有效的:
let workspaceReact:UnwrapRef<ToolboxInfo>;
workspaceReact = reactive(toolbox)
但我觉得太复杂了。有什么更好的方法吗?
发布于 2022-06-10 04:53:23
一种解决方案是从reactive
切换到ref
,并在<script setup>
中使用反应性变换,这将自动解锁ref
。
要使用它,请将ref
/computed
替换为$ref
/$computed
(不需要导入):
<script setup lang="ts">
import { onMounted } from 'vue'
type ToolboxInfo = {
name: string
id: string
counter: number
}
let workspaceReact = $ref<ToolboxInfo | null>(null)
let msg = $computed(() => `Hello ${workspaceReact?.name}!`)
const onClick = () => workspaceReact!!.counter++
onMounted(() => {
workspaceReact = {
id: 'my id',
name: 'my toolbox',
counter: 0,
}
})
</script>
警告:和vue@3.2.37
一样,这个特性仍然是实验性的:
⚠️实验特征 反应性变换是目前的一个实验特征。默认情况下,它是禁用的,并且需要显式选择。在最后定稿之前,它也可能发生变化。为了保持最新的状态,请密切关注它的关于GitHub的建议与探讨。
发布于 2022-06-09 04:19:25
这是不可能的reactive
需要扩展对象https://vuejs.org/api/reactivity-core.html#reactive
反应性() 返回对象的反应性代理。 类型 功能反应性(目标: T):UnwrapNestedRefs
你的选择是:
{}
初始化ref
https://stackoverflow.com/questions/72554224
复制相似问题