我需要在获取后用一些数据更新一个React式对象:
setup(){
const formData = reactive({})
onMounted(() => {
fetchData().then((data) => {
if (data) {
formData = data //how can i replace the whole reactive object?
}
})
})
}
formData = data
将无法工作,并且formData = { ...formdata, data }
有没有更好的办法?
4条答案
按热度按时间i34xakig1#
虽然布萨杰拉·布拉希姆的解决方案有效,但它不是这个问题的确切答案。
从某种意义上说,React性数据不能用
=
重新分配,但有一种方法可以重新分配React性数据,即Object.assign
。因此,这应该有效
当React对象为空或始终包含相同的关键帧时,此解决方案有效。
然而,如果
formData
具有key x
,并且data
不具有key x
,则在Object.assign
之后,formData
仍将具有key x
,因此这不是 * 严格地 * 重新分配。演示示例;包括手表
egdjgwm82#
根据官方文件:
由于Vue的React性跟踪通过属性访问工作,因此我们必须始终保持对React性对象的相同引用。这意味着我们无法轻松地 “替换” React性对象,因为与第一个引用的React性连接丢失了
reactive
应定义一个具有嵌套字段的状态,这些嵌套字段可以如下变化:如果只有一个嵌套字段,则使用
ref
:9lowa7mx3#
我认为使用
ref
并通过xxx.value = xxx
更新的方法是目前最好的。0dxa2lsx4#
我猜: