通过 this.state 生产和不生产有什么区别? Immer.js
What is the difference between passing this.state to produce and not? Immer.js
有什么区别:
this.setState(produce((draft) => { draft.name ='name'}
和
this.setState(produce(this.state, (draft) => { draft.name ='name'}
有人能给我解释一下吗?
在大多数情况下,两者的行为相同
produce((draft) => { draft.name ='name'})
returns 一个用代理包装参数并应用突变的函数。 setState
允许开发者传递一个将以当前状态调用的函数。
produce(this.state, (draft) => { draft.name ='name'})
returns 对第一个参数的 Proxy 应用突变的结果。 setState
允许传递“更新状态”因此它也可以工作。
第一种方法更可取,原因如下
- 如果按顺序快速调用,您通常希望下一个状态建立在变异的前一个状态之上(著名的反例)。
setState
的变异函数版本是要走的路。
- 输入的字符较少。
有什么区别:
this.setState(produce((draft) => { draft.name ='name'}
和
this.setState(produce(this.state, (draft) => { draft.name ='name'}
有人能给我解释一下吗?
在大多数情况下,两者的行为相同
produce((draft) => { draft.name ='name'})
returns 一个用代理包装参数并应用突变的函数。setState
允许开发者传递一个将以当前状态调用的函数。produce(this.state, (draft) => { draft.name ='name'})
returns 对第一个参数的 Proxy 应用突变的结果。setState
允许传递“更新状态”因此它也可以工作。
第一种方法更可取,原因如下
- 如果按顺序快速调用,您通常希望下一个状态建立在变异的前一个状态之上(著名的反例)。
setState
的变异函数版本是要走的路。 - 输入的字符较少。