使用VueJS更新对象中的多个道具时如何诱导反应性?

奥斯汀·福斯:

在构建我的应用程序时,我看到一些奇怪的行为,其中一部分dom对输入没有正确反应。突变正在注册,状态正在改变,但DOM中的属性却没有。我注意到当我返回时,在html中编辑了一个新的空白行,然后返回,它现在正在显示新的道具。但是我必须编辑,保存文档,然后返回以查看状态的任何新更改。

因此状态正在更新,但是Vue没有对更改做出反应。这就是我想为什么的原因:https : //vuejs.org/v2/guide/reactivity.html#For-Objects

Vue无法检测到属性的添加或删除。由于Vue在实例初始化期间执行getter / setter转换过程,因此数据对象中必须存在一个属性,以便Vue对其进行转换并使其具有反应性

有时您可能想为现有对象分配许多属性,例如使用Object.assign()或_.extend()。但是,添加到对象的新属性不会触发更改。在这种情况下,请使用原始对象和mixin对象创建具有属性的新鲜对象

我的状态下的Object是的实例js-libp2p每当libp2p实例执行某项​​操作时,我都需要定期更新处于状态的对象。我通过执行突变来做到这一点

syncNode(state, libp2p) {
    state.p2pNode = libp2p
}

libp2p我正在尝试通过更改使DOM响应的对象的当前实例在哪里state.p2pNode我不能使用$set,即用于单值编辑,并且我认为.assign还是.extend无法使用,因为我正尝试替换整个对象树。

为什么会有此限制,并且有针对此特定问题的解决方案?

并且:

state这种方式重新分配Vuex 项目所需的唯一事情是事先声明它。

即使覆盖整个值,该项目是对象还是任何其他变量类型都是无关紧要的。这与需要进行反应性警告的情况不同,set因为尽管state是对象,但Vue仍无法检测到对象属性突变这是不必要的:

Vue.set(state, 'p2pNode', libp2p);

如果存在正确使用的组件p2pNode而对重新分配没有反应的组件,那么肯定还有其他问题确认您已在Vuex初始状态声明/初始化了它:

state: {
  p2pNode: null  // or whatever initialization value makes the most sense
}

这是一个演示示例问题可能出在您没有以某种反应方式使用Vuex值。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

VueJS:对象的反应性数组

如何使用钩子在反应中更新嵌套 json 对象的状态

当我在反应中更改商店时道具不更新

如何在数组中为多个对象设置属性但保留各自的反应性

使用vuejs时如何在url中传递多个参数

使用历史对象在反应路由器中传递道具

如何在反应中更新状态对象?

如何从外部触发VueJS中的下拉菜单的反应性

如何更新反应性对象(和一般属性)?

反应组件道具。如何获得内部对象?

componentWillReceiveProps如何更新道具的反应?

如何从“道具”数组中拼接一个对象并将其分配给预定义的“数据”属性,使其可访问且具有反应性?

无法在反应中更新父道具

R闪亮的反应性返回多个对象

插件的VueJS反应性绑定-如何?

遍历多个对象时在VueJS中很好地设置tabIndex

购物车 vuejs 中的反应性

使用反应中的先前状态更新对象数组中的数组

反应:如何更新对象的属性?

如何使用Vuejs对数组中的多个不同对象求和?

反应-更新状态中的对象

在反应中更新对象数组中的多个对象的正确方法是什么?

如何在反应中更新状态的对象数据

如何在反应状态下使用索引更新对象?

道具更新时更新VueJS组件数据属性

如何使用計算屬性和道具過濾對象 [VueJS]

通过新道具时,反应子组件状态不会更新

在反应中使用 RadioGroup 时如何获取完整的事件对象

触发onChange事件时如何更新反应中的函数