javascript - this.setState 不改变状态值
问题描述
ageVSpqiYearPick
是一个变量,它决定选择哪个背景层(函数selectBackgroundLayer()
)。ageVSpqiYearPick
选择菜单项时设置。使用当前代码,变量不会被更改setState
。console.log
是:
'选择背景层:,2021'
this.state = { //in constructor
ageVSpqiYearPick: ''
};
<MenuItem //these menu items are located in render method
key="Age"
text="Age"
onClick={() => {
this.props.selectBackgroundLayer('Age');
this.setState({ ageVSpqiYearPick: "Age" });
console.log("Setting AGE");
}}
/>
<MenuItem
key="PSR"
text="PQI - Pavement Quality Index"
onClick={() => {
this.setState({ ageVSpqiYearPick: 'getPQI' }, () => { this.props.selectBackgroundLayer('getPQI'); });
console.log("Setting PQI");
}}
/>
//this is a handling function for a dropdown selector for changing the year
onChangeDropdownPQI = (e) => {
const { target } = e;
const { name, value } = target;
console.log("selectBackgroundLayer: " + this.state.ageVSpqiYearPick + " ," + value);
this.selectBackgroundLayer(this.state.ageVSpqiYearPick,value);
}
解决方案
更改onClick
为onSelect
<MenuItem key="Age" text="Age"
onSelect={() => { this.props.selectBackgroundLayer('Age'); this.setState({ ageVSpqiYearPick: "Age" }); console.log("Setting AGE"); }} />
<MenuItem key="PSR" text="PQI - Pavement Quality Index"
onSelect={() => { this.setState({ ageVSpqiYearPick: 'getPQI' }, () => { this.props.selectBackgroundLayer('getPQI'); }); console.log("Setting PQI");} } />
推荐阅读
- python - 如何在 Django 模型上创建可为空的字段
- c# - 如果该项目尚未在该数组列表中,则 C# 将项目添加到该数组列表中
- graphql-dotnet - 没有服务器的 Graphql
- c# - 如何在 ASP.NET Core 中更改异常语言
- android - Android Canvas PorterDuff 未正确屏蔽
- elf - 在使用 --adjust-section-vma 进行 objcopy 之后,使用 -dSl 的 objdump 不显示与程序集混合的源代码
- nlp - 与 BERT 的字符串比较似乎忽略了句子中的“不”
- arrays - 如何在C代码中使用给定的输入数组生成特定值的数组
- python-3.x - 从 timeit 返回的时间单位
- javascript - 使用“滚动到底部”加载组件在滚动条位于顶部然后向下时显示 1 帧