【发布时间】:2021-06-24 06:57:03
【问题描述】:
所以我正在使用组合 API 在 Vue 3 中构建一个搜索页面。我有一个组件,它从父级获取一组数据并显示数据的 sn-p,包括关键字所在的位置,因此它需要制作此数据的工作副本以生成可显示的值。
我遇到了很多奇怪的错误,因为我最初使用以下代码,认为它只会获取值:
setup(props) {
const displayEntry = ref(props.entry)
...
但这最终是被动的并改变了原始数据。我不需要反应,因为我从父级动态创建组件。我也不想在父级中保留数据的工作副本,因为这会增加代码的复杂性。然后我尝试了无数种不同的解决方案来试图打破反应,直到我得到简单的:
displayEntry.value = props.entry
这时我的 linter 变成了香蕉……
error Getting a value from the `props` in root scope of `setup()` will cause the value to lose reactivity vue/no-setup-props-destructure
那么从道具中获取价值的正确方法是什么?
【问题讨论】:
-
“更改原始数据”是什么意思?这感觉像是一个 XY 问题:如果您在子组件中接收道具,则子组件不应该改变道具。您仍然应该使用
ref(),这样每当父数据发生变化时,子组件的 prop 就会相应地更新。 -
哦,我想我正在将响应式数据传递给 prop,但我不确定为什么它是响应式的,因为我执行了 entry.value.filter()
-
您好,相信您需要像这样使用 toRefs 辅助函数:
const { entry } = toRefs(props)v3.vuejs.org/guide/composition-api-setup.html#props
标签: javascript vue.js vue-component vuejs3 vue-composition-api