reactjs - React setState 不更新总是使用 componentDidMount
问题描述
我想设置一堆状态,但有时 setState 有效,有时无效,并且尝试使用 componetWillMount 也没有成功。带有 setState 的回调函数正在触发带有 null 的警报
这是我的代码
componentDidMount(){
var self = this
var uiData = {ui_id:"custReg"}
api('ip/defaultValue/load_DefaultValue', uiData)
.then(function async (response) {
if(response){
if(response.data.status){
var defaultData = response.data.data
self.setState({
defaultDatas: response.data.data ,
branches: defaultData.filter(data =>{return data.TypeID === "Branch"}),
customerCategories: defaultData.filter(data =>{return data.TypeID === "Customer
Category"}),
customerTypes: defaultData.filter(data =>{return data.TypeID === "Customer Type"}),
titles: defaultData.filter(data =>{return data.TypeID === "Name Title"}),
relationTypes: defaultData.filter(data =>{return data.TypeID === "Relation Type"}),
maritalStatuses: defaultData.filter(data =>{return data.TypeID === "Marital
Status"}),
educations: defaultData.filter(data =>{return data.TypeID === "Education"}),
occupations: defaultData.filter(data =>{return data.TypeID === "Occupation"}),
religions: defaultData.filter(data =>{return data.TypeID === "Religion"}),
castes: defaultData.filter(data =>{return data.TypeID === "Caste"}),
bloodGroups: defaultData.filter(data =>{return data.TypeID === "Blood Group"}),
incomeRanges: defaultData.filter(data =>{return data.TypeID === "Income Range"}),
grades: defaultData.filter(data =>{return data.TypeID === "Grading"}),
allDataSet:true
}, () => {
if(self.state.branches){
self.forceUpdate()
alert(JSON.stringify(self.state.branches))
}
});
}else{
alert("Unable to load default data.")
}
}else{
alert("Unable to connect.")
}
})
}`
解决方案
见,
React doesn't guarantee that the state updates are done immediately
。这就是原因,不要console.log(this.state)
在设置状态后立即调用。
推荐阅读
- c# - PowerPivot 使用 VBA/C# 按列排序
- c# - 循环整数
- c++ - C++,对模板参数执行预处理器逻辑
- javascript - Typescript -- 无法理解 typescript -> return this._subscribe({onNext: onNext});
- javascript - 如何在 React JS 中获取 API 并将数据保存到 MongoDB
- java - 为什么该函数在循环链表中不起作用?
- flutter - 提供者适用于孩子,但不适用于 SearchDelegate
- google-cloud-firestore - 默认情况下,是否会在身份验证状态更改时调用 Firestore 快照侦听器?
- python - 自定义 tf.keras 指标意外结果
- postgresql - TypeOrm:在 Postgres 中定义一对一关系时抛出 DataTypeNotSupportedError