请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

dva 需要使用 immutable 吗

  1. 如果用 dva 的脚手架开发,有必要再使用 immutable 提升性能吗,但是怎么使用 redux-immutable。

  2. immutable 的作用是是什么,我理解就是:1、函数式编程;2、不会被误改;3、多层对象改变子对象一定返回新对象,不会误操作导致子组件不渲染;4、拷贝效率高;
    但对于非扁平化 redux 减少渲染次数提高性能我一直没太理解
    1、普通情况,immutable"深拷贝" 和 普通浅拷贝都会导致对象地址改变,父子组件重新渲染
    2、在子组件使用 PureCompoent 的时候,如果引入的 “redux 子对象(非扁平)” 不改变 都不会引起重新渲染
    所以用不用 immutable 没啥区别呀,这种情况用 PureCompoent 就好了

  3. 为啥dva 不需要 acitonCreator
    我一直觉得 acitonCreator 就是为了语义化一些,constant 不好读,如果是 redux-thunk 还可以封装一下请求,还有其他作用吗。

而 constant 是为了防止 reducer 和 派发 action 时候的 type 书写不一致,报错不明显,dva 用的是 namespace/方法名,不需要constant,所以也不需要 acitonCreator,是这样理解吗

  1. 这里我觉得因为 dva 没有 constant,所以使用的时候也容易导致写错 namespace/方法名 而不报错呀

正在回答 回答被采纳积分+3

1回答

Dell 2019-12-28 17:29:05
  1. 又必要,你可以直接使用 imutalble 数据类型,没必要非要用 redux-immutable

  2. 第三点不就是间接降低了渲染次数吗?

  3. 你可以使用 actionCreator 把逻辑拆分的更精细,但小项目过度拆分,是不是过度设计

  4. dva是个封装,和redux使用肯定是有区别的

1 回复 有任何疑惑可以回复我~
  • 提问者 诺巴蒂 #1
    2. 第三点不就是间接降低了渲染次数,这个怎么理解呀
    3. actionCreator 和 reducer 要写业务逻辑吗,我看怎么写的都有,有的一个 state 变量对应一个 actionCreator,业务逻辑写在 view 层,actionCreator 只作为 修改 state 调用;也有把业务逻辑写在actionCreator,一个 actionCreator 再调用很多 actionCreator实现逻辑
    回复 有任何疑惑可以回复我~ 2019-12-28 18:33:52
  • 提问者 诺巴蒂 #2
    还有immutable 的 is方法是怎么实现深比较的,网上的文章基本都说每个值都有唯一的hashcode的,直接比,但这个hash应该是key的hashcode呀,生成tree用的,value是不是还是得多层深比较
    回复 有任何疑惑可以回复我~ 2019-12-28 18:56:16
  • Dell 回复 提问者 诺巴蒂 #3
    vulue肯定更多层,但value的hash,只需要比对一层即可。
    回复 有任何疑惑可以回复我~ 2019-12-29 16:50:59
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信