许多人直接在this
(例如 this.clickCount
)而不是this.state
对象上使用属性,有时候会有20个不同的属性直接附加到this
。
this.state
纯粹是为了组织还是还有其他相关内容?为什么这么多人/项目没有使用this.state
?
以下两个示例的工作方式完全相同。
class Clicker extends React.Component {
constructor() {
super()
this.state = {
clickCount: 0
}
this._onClick= this._onClick.bind(this)
}
render() {
return (
<button onClick={this._onClick}>
Clicked {this.state.clickCount} times
</button>
)
}
_onClick() {
this.setState({
clickCount: this.state.clickCount + 1
})
}
}
class Clicker extends React.Component {
constructor() {
super()
this._onClick= this._onClick.bind(this)
}
render() {
return (
<button onClick={this._onClick}>
Clicked {this.clickCount ? this.clickCount : 0} times
</button>
)
}
_onClick() {
this.clickCount = (this.clickCount ? this.clickCount : 0) + 1
}
}
答案 0 :(得分:3)
有些情况下,您只需要与state
无关的实例变量。对于这些,只需执行this.<INSTANCE-VARIABLE>
。
当您希望在更改值时重新呈现组件时,最好将该值附加到state
并使用this.setState(..)
进行修改。
答案 1 :(得分:0)
第一个示例将在调用_onClick
时触发组件的重新呈现,因为状态已更改。
第二个示例在调用_onClick
时不会触发组件的重新渲染,因此您可能在一段时间内看不到更新的值(直到其他东西再次渲染组件)。