Reactjs 无法在组件中设置状态
单击事件发生时,状态未设置为组件内给定的值。它仍然显示初始状态,控制台记录旧状态,即“hello”Reactjs 无法在组件中设置状态,reactjs,Reactjs,单击事件发生时,状态未设置为组件内给定的值。它仍然显示初始状态,控制台记录旧状态,即“hello” var CompOne=React.createClass({ getInitialState:函数(){ 返回{ 编辑:“你好” } }, editme:function(){ 这是我的国家({ 编辑:“那里” }) console.log(this.state.edit) }, render:function(){ 返回( {this.props.name} 编辑 ) } }) var Pr
var CompOne=React.createClass({
getInitialState:函数(){
返回{
编辑:“你好”
}
},
editme:function(){
这是我的国家({
编辑:“那里”
})
console.log(this.state.edit)
},
render:function(){
返回(
{this.props.name}
编辑
)
}
})
var Pri=React.createClass({
渲染:函数(){
返回(
功能设置状态
不同步。这里是一个关于这一点的注释
setState()
不会立即改变此.state,但会创建一个
等待状态转换。调用此函数后访问此.state
方法可能返回现有值。没有
保证对setState
的调用和调用的同步操作
为了提高性能,可能会进行批处理
用人类的术语来说,这意味着如果调用setState
并尝试立即读取状态,状态可能会改变,也可能是相同的
您可以使用的解决方案是将回调作为第二个参数传递给setState
方法:
editme: function () {
this.setState({
edit: "there"
}, function(){
// this function would be invoked only when the state is changed
console.log(this.state.edit);
});
}
第二个参数的用途在同一文档文章中描述:
第二个参数是一个可选的回调函数,它将
一旦setState
完成且组件已安装,则执行一次
重新渲染
您需要在
setState
中使用回调函数,因为setState需要时间进行变异,并且在语句异步执行时,会在状态变异之前执行console.log
editme: function () {
this.setState({
edit: "there"
}, function(){
console.log(this.state.edit)
})
},
var CompOne=React.createClass({
getInitialState:函数(){
返回{
编辑:“你好”
}
},
editme:function(){
这是我的国家({
编辑:“那里”
},函数(){
console.log(this.state.edit)
})
},
render:function(){
返回(
{this.props.name}
编辑
)
}
})
var Pri=React.createClass({
渲染:函数(){
返回(
editme: function () {
this.setState({
edit: "there"
}, function(){
console.log(this.state.edit)
})
},