首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过this.state来生产和不生产有什么区别?Immer.js

通过this.state来生产和不生产有什么区别?Immer.js
EN

Stack Overflow用户
提问于 2021-10-19 12:32:44
回答 1查看 155关注 0票数 0

在以下方面有何区别:

this.setState(produce((draft) => { draft.name ='name'}

this.setState(produce(this.state, (draft) => { draft.name ='name'}

有人能解释一下吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-10-19 15:04:33

在大多数情况下,两者的行为是一样的。

  1. produce((draft) => { draft.name ='name'})返回一个函数,该函数用代理包装参数并应用突变。setState允许开发人员传递将以当前状态调用的函数.

  1. produce(this.state, (draft) => { draft.name ='name'})返回将突变应用于第一个参数的代理的结果。setState允许传递“更新状态”,因此它也将工作。

第一种方法更可取,因为有以下几点

  1. ,如果按顺序快速调用,通常希望将下一个状态构建在以前的变异状态之上(著名的反示例)。而突变函数版本的setState是可行的。
  2. ,它是较少的字符类型。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69630892

复制
相关文章

相似问题

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