【发布时间】:2020-01-13 20:07:54
【问题描述】:
这是我的应用程序结构
Codepen 示例:https://codesandbox.io/s/awesome-blackwell-kd3nn
class MasterForm extends Component {
constructor() {
super();
this.state = {
userInput: "",
available: "",
silos: []
};
}
handleFormSubmit = e => {
e.preventDefault();
this.silo_1Lookup();
};
handleInputChange = e => {
let input = e.target;
let name = e.target.name;
let value = input.value;
this.setState({
[name]: value
});
};
silo_1Lookup = () => {
let silos = [...this.state.silos];
silos.push({
userInput: this.state.userInput,
available: this.state.available
});
this.setState({
silos,
userInput: "",
available: ""
});
const siloDepthFilling = {
"0": "926",
"0.5": "893",
"1": "860",
"1.5": "827",
"2": "794",
"2.5": "761",
"3": "728",
"3.5": "695",
"4": "662",
"4.5": "629",
"5": "595"
};
console.log("function ran");
return siloDepthFilling[silos[0].userInput];
};
}
我正在尝试更改 silo[0].available 的属性以匹配我的 silo_1Lookup() 函数中的内容。
比如用户输入5,silos[0].available应该设置为“595”
if (silos[0].userInput === '5') {
return silos[0].available = "595"
}
有点像,但使用 silo_1Lookup() 中的字典;
目前,函数运行,但 silos[0].available 没有更新为新值,也没有错误消息
【问题讨论】:
-
看起来你在调用
silo_1Lookup()之后没有调用setState()。 -
@Nikhil 应该在哪里?我已将其移至 silo_1lookup() 的底部,但仍然无法正常工作
-
在处理程序中,你必须调用 silo_1Lookup
标签: javascript arrays reactjs ecmascript-6