我遇到了一个问题,将状态设置为反应。我可以主机console.log正好正确,但是当我调用setState()时,我获得了参考错误" targetsspreadsheet"。
这是以下功能
getCategories = (file) => {
console.log(this.state.targetSpreadsheet); // works fine
this.setState({targetSpreadsheet: file}); // targetSpreadsheet is not defined.
}
和一个称其为
的选择器 <SimplePicker
ref={'picker2'}
options={this.state.spreadsheetNames}
onSubmit={(option) => {
for(var i = 0; i < this.state.spreadsheets.files.length; i++){
if(this.state.spreadsheets.files[i].name === option){
let file = this.state.spreadsheets.files[i];
this.getCategories(file);
break;
}
}
}}
/>
编辑
构造函数
constructor(props){
super(props);
this.state = {
targetSpreadsheet: ''
}
this.getCategories = this.getCategories.bind(this);
}
此节目您要访问电子表格对象 files array array en
this.state.spreadsheets.files[I]
但是在您的构造函数中,您已将targetSpreadsheet
AS和字符串对象进行了初始化,因此您会遇到错误。
this.state = {
targetSpreadsheet: ''
}
解决方案:您需要将其作为一个用文件作为空数组的对象。
this.state = {
targetSpreadsheet: {
files:[]
}
}