首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >vuex是否能正确处理不引用‘`state`’的泛型突变?

vuex是否能正确处理不引用‘`state`’的泛型突变?
EN

Stack Overflow用户
提问于 2019-05-23 03:50:22
回答 1查看 138关注 0票数 1

我正在使用vuex和一个数据树。它是响应式的,并且工作良好,因为我们有一个对应的组件树。因为结构是一个树,所以通常需要改变一个嵌套得很深的子对象。实现这一点的简单方法是使用一个在其有效负载中接受孩子的变体:

代码语言:javascript
运行
复制
removeLeaf(state, { child, leaf }) {
  child.children = child.children.filter((i: any) => i !== leaf);
  state = state; // silence warning
},

另一种方法是更改突变,使其工作方式如下:

代码语言:javascript
运行
复制
removeLeaf(state, { child_, leaf }) {
  let child = searchForChild(state, child_);
  child.children = child.children.filter((i: any) => i !== leaf);
},

我对第一种方式很满意。编写通过使用有效负载而不是state参数来修改state的子对象的突变是否有任何缺点?

EN

回答 1

Stack Overflow用户

发布于 2019-05-23 10:08:05

我不认为它能正常工作。

Javascript Vue和Vuex的反应系统是基于 Javascript

如果您在任何突变中对state执行console.log操作,您将看到如下所示:

getset是你的Vuex状态的getter和setter。

没有二传手,Vue的反应系统可能无法工作。

在你的变种中试试console.log statechild。您可能会看到child 不包含setter

如果setter不在那里,Vue就不会知道您已经更新了child的状态,并且您很可能会遇到反应性问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56264005

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档