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

时间:2020-09-11 19:58:18

标签: javascript reactjs react-native

之前几乎有人问过类似的问题,但我无法解决这个问题,所以就在这里(我正在使用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();
}

“文本”包含来自输​​入的字符串,并将添加到“待办事项”数组中。

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

我仅在要使用异步存储时收到错误。这是上面的代码结尾应调用的内容:

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

我该怎么办?预先感谢!

1 个答案:

答案 0 :(得分:1)

问题在于您的变量为null ..但它需要一个列表。

尝试一下:

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();
}