reactjs - 状态未在 componentWillMount 中更新
问题描述
class ViewExchange extends React.Component{
state={list:[],refresh:false}
componentWillMount(props){
if(_.isEmpty(Cookies.get())){
this.props.history.push("/signup")
}
else{
console.log("is present")
let platform = Cookies.get('platform')
console.log(platform)
axios.post('http://localhost:3001/user/viewexchange',{platform})
.then(res=>{
console.log(res.data)
this.setState({list:res.data})})
console.log(this.state.list)
}
}
render(){
return (
<div>
<button onClick={()=>this.setState({refresh:true})}>refresh</button>
{console.log(this.state.refresh)}
</div>
);
}
}
export default withRouter(ViewExchange);
解决方案
setState
状态更新操作是异步的,因此更新状态需要一些时间。但是您的日志在更新之前执行。相反,您可以使用传递函数作为 setState 中的第二个参数:
this.setState({list:res.data}, () => console.log(this.state.list))
另一种方法是:
this.setState(state => {
state.list = res.data
}, () => console.log(this.state.list))
推荐阅读
- javascript - 猫鼬将值添加到数组
- reactjs - 在 React Native 创建的 dom 元素中显示 id 或 name 属性
- r - 如何将“19”填充到字符串
- windows - Windows Docker Image 在 Azure 上不断挂起(网络应用程序)
- c++ - 使用不同方法计算函数时的不同结果 y = f(x)
- c++ - 创建一个“空”进程
- reactjs - SVG 线上的 Framer 运动长度过渡
- gitlab - 在 GitLab.com 上导入自托管 GitLab 导出时,如何保留创建者/分配/评论者关联?
- python - python脚本完成后如何保持运行?
- powershell - 如何在使用 az monitor app-insights 查询时运行多行查询?