Javascript React setState不更新状态值
我有一个react应用程序,在构造函数中我将displayDate初始化为空字符串。加载应用程序时,将根据道具设置displayDate值Javascript React setState不更新状态值,javascript,reactjs,react-hooks,state,setstate,Javascript,Reactjs,React Hooks,State,Setstate,我有一个react应用程序,在构造函数中我将displayDate初始化为空字符串。加载应用程序时,将根据道具设置displayDate值 构造函数(道具){ this.calendar=null; 这个州{ 显示日期:“ }; } componentDidMount(){ this.calendar=新日历({ 格式:“MM/DD/YYYY”, 值:this.state.displayedDate }); } 组件willmount(){ 如果(此.props.defaultDate){ 这是
构造函数(道具){
this.calendar=null;
这个州{
显示日期:“
};
}
componentDidMount(){
this.calendar=新日历({
格式:“MM/DD/YYYY”,
值:this.state.displayedDate
});
}
组件willmount(){
如果(此.props.defaultDate){
这是我的国家({
displayedDate:this.convertDateToString(this.props.defaultDate)
});
}
}
//后面还有很多行代码
render(){
返回(
);
}
在测试应用程序时,我在上设置了一个断点。在组件中设置state
将挂载
,它确实输入了if
块,因此应用程序正在从道具接收日期值。但是setState似乎没有将displayedDate
设置为状态。我的convertDateToString
函数返回一个值,因此displayedDate
获取一个空值不是问题。在componentDidMount
中,我设置了一个断点并转储了状态值,displayedDate
仍然是一个空字符串
我以前见过有人遇到类似的问题,setState不能像预期的那样工作。我做错了什么?谢谢这回答了你的问题吗?为什么这么复杂?我将代码从生命周期方法向上移动到构造函数中。尝试在呈现函数中显示
${this.state}
或控制台.log(this.state)
<代码>设置状态()不会立即应用状态更改(如Brian所述)。一旦应用,React将调用render
,并刷新UI。@Thomas我在构造函数中遇到日历初始化问题。日历中还有其他字段,这些字段依赖于html元素的呈现,因此我需要使用一些createRef
s。结果是将初始化移动到生命周期方法,以便在加载应用程序后初始化日历。