Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript TypeError:null不是对象(计算';arr.push';)_Javascript_Reactjs_React Native - Fatal编程技术网

Javascript TypeError:null不是对象(计算';arr.push';)

Javascript TypeError:null不是对象(计算';arr.push';),javascript,reactjs,react-native,Javascript,Reactjs,React Native,之前有人问过几乎类似的问题,但在我的案例中我无法理解,所以这里是(我使用react native和expo): 我当时正在使用chrome查看我的待办应用程序代码的结果,它工作得很好,直到我想在我的手机上试用它,我在调用“addTodo”功能时遇到了这个问题: TypeError:null不是对象(正在计算“arr.push”) 代码如下: addTodo = () => { var newTodo = this.state.text; var arr = this.state.todo;

之前有人问过几乎类似的问题,但在我的案例中我无法理解,所以这里是(我使用react native和expo):

我当时正在使用chrome查看我的待办应用程序代码的结果,它工作得很好,直到我想在我的手机上试用它,我在调用“addTodo”功能时遇到了这个问题:

TypeError:null不是对象(正在计算“arr.push”)

代码如下:

addTodo = () => {
var newTodo = this.state.text;
var arr = this.state.todo;
if (!newTodo) {
  alert("Empty!");
} else {
  arr.push(newTodo);
  this.setState({ todo: arr, text: "" });
   this.setDataLocally();
}
“text”包含来自输入的字符串,将添加到“todo”数组中

如您所见,“arr.push”只应在“newTodo”不为null或空时调用

我只在想使用异步存储时才会收到错误。这是在上述代码末尾应调用的内容:

  setDataLocally = () => {
var jsonData = JSON.stringify(this.state.todo);
AsyncStorage.setItem("list", jsonData);

我该怎么办?提前谢谢

问题是您的变量为空。。但它需要一份清单

试试这个:

addTodo = () => {
var newTodo = this.state.text;
var arr = this.state.todo !== null ? this.state.todo : [];
if (!newTodo) {
  alert("Empty!");
} else {
  arr.push(newTodo);
  this.setState({ todo: arr, text: "" });
   this.setDataLocally();
}