你能写
let firstNameValid = this.state.firstNameValid;
firstNameValid = value.length >= 1;
this.setState({ firstNameValid, firstNameValid,})
简写语法
this.setState({ firstNameValid})
我已经尝试了上面的代码,看来工作正常。 只是想知道它是否会有副作用?
答案 0 :(得分:4)
TestView
只是this.setState({ firstNameValid })
的糖。没有副作用。
这些被称为this.setState({ firstNameValid: firstNameValid })
,您可以阅读关于它们的更多信息here。
答案 1 :(得分:3)
react使用ES2015(带有webpack和babel)。
setState接受作为对象的参数。
在ES2015中,{ a : a }
与{ a }
(对象缩写符号)相同。
所以x = { a : a, b : b ...}
与x = { a, b ..}
相同
因此,您的代码是完全有效的,不会有任何副作用。
答案 2 :(得分:1)
如果您是说自己正在写作
this.setState({foo: foo})
现在您正在使用this.setState({ foo })
没有区别。
但是setState
很可能会产生副作用,首先是因为它是异步的,其次是因为您正在更改整个组件的状态并导致渲染。
通过这种简短的对象分配方式是JS功能,与react没有关系。