市场推广计划方案,关键词优化招商,宜春做网站公司,做演示的网站不可变值
state必须在构造函数中定义 在setState之前不能修改state的值#xff0c;不要直接修改state,使用不可变值 可能是异步更新
直接使用时异步的
this.setState({count: this.state.count 1
}, () {console.log(count by callback, this.state.count) // 回调函…不可变值
state必须在构造函数中定义 在setState之前不能修改state的值不要直接修改state,使用不可变值 可能是异步更新
直接使用时异步的
this.setState({count: this.state.count 1
}, () {console.log(count by callback, this.state.count) // 回调函数
})
console.log(count, this.state.count) // 异步的拿不到最新值在setTimeout中setState是同步的
setTimeout(() {this.setState({count: this.state.count 1})console.log(count, this.state.count) // 在settimeout中打印值正确
}, 0)自己定义的DOM事件setState是同步的
clickHandler () {this.setState({count: this.state.count 1})console.log(count in body event, this.state.count);
}
componentDidMount() {document.body.addEventListener(click, this.clickHandler)
}componentWillUnmount() {document.body.removeEventListener(click, this.clickHandler)
}可能被合并
如下例子
直接使用 - 传入对象会合并
this.setState({count: this.state.count 1
})
this.setState({count: this.state.count 1
})
this.setState({count: this.state.count 1
})console.log(this.state.count) // 1传入函数 - 函数不能被合并
this.setState((prevState, props) {return {count: prevState.count 1}
})
this.setState((prevState, props) {return {count: prevState.count 1}
})
this.setState((prevState, props) {return {count: prevState.count 1}
})
console.log(this.state.count) // 3