问一下各位大佬:dva中通过yiled select获取到state中的一个值,?

问一下各位大佬:dva中通过yiled select获取到state中的一个值,?

阅读全文
请先 登录 后评论
  • 0 关注
  • 0 收藏 76 浏览
  • 略问用户 提出于 2020-10-22 17:37:52

7 个回答

xxxxxa
本质还是redux,所以只能通过reducer
请先 登录 后评论
xxxxxa
修改store 中state的唯一方式是通过reducer
请先 登录 后评论
xxxxxa
数组是引用类型,你push的元素还是操作的store里的arr,所以,你即便在最后调用了put,视图是不会更新的。
请先 登录 后评论
xxxxxa
就算可以 你觉得合适吗
请先 登录 后评论
xxxxxa
如果不太熟悉,使用redux就永远生成新的数据替换旧数据,这样一般不会有bug,否则有bug也不知道哪里出问题。你的这个问题,有点类似直接修改组件内部state然后setState,造成ui可能更新可能不更新,即使数据已经变了,写多了就会慢慢明白为什么会这样
请先 登录 后评论
xxxxxa
不能 得put一个新数组
请先 登录 后评论
xxxxxa
select结果好像是引用,不是深拷贝,arr.push(1) 对数组进行增删时,前后两个arr依然是严格相等,有可能会造成视图不更新,会有问题,可以使用arr: [...arr], 简单的数组组合没什么问题,复杂一点的,比如payload里面使用的是arr[8]子元素,再回馈过来写入到arr里,或者数组正叙倒叙切换,就可能出现点问题(我猜的),但是深拷贝的话,也是耗性能,不晓得dva怎么实现的,之前移植dva到model管理模式到小程序的时候,发现过select到这个问题,我是采取深拷贝的模式,数组不能直接修改,就挺烦,[...arr]这样的写法,也跟拷贝便利性能差不多喽,搞不懂取舍
请先 登录 后评论