我在将react-native设置为状态时遇到问题。我可以console.log值很好,但是当我调用setState()时,我得到了参考错误'targetSpreadsheet'未定义。
这是在以下功能中
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);
}
答案 0 :(得分:1)
此显示您要访问其中具有文件数组的电子表格对象
this.state.spreadsheets.files[I]
但是在您的构造函数中,您已经将targetSpreadsheet
初始化为and字符串对象,因此会出错。
this.state = {
targetSpreadsheet: ''
}
解决方案:您需要将其作为一个对象,文件作为一个空数组。
this.state = {
targetSpreadsheet: {
files:[]
}
}