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

Posted

技术标签:

【中文标题】TypeError:null 不是对象(评估“arr.push”)【英文标题】:TypeError: null is not an object (evaluating 'arr.push') 【发布时间】:2020-09-11 19:58:18 【问题描述】:

之前几乎有人问过类似的问题,但在我的情况下我无法弄清楚,所以这里是(我使用的是 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”不为空或不为空时调用。

只有在我想使用 Asyncstorage 时才会出现错误。这是上面代码末尾应该调用的内容:

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

我该怎么办?提前致谢!

【问题讨论】:

【参考方案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();

【讨论】:

以上是关于TypeError:null 不是对象(评估“arr.push”)的主要内容,如果未能解决你的问题,请参考以下文章

TypeError:null 不是对象(评估 ''this.state.torchon')

“TypeError:null 不是对象(评估‘RCTVideoInstance.Constants’)”

TypeError:null 不是对象(评估'RNRandomBytes.seed')React Native

TypeError:null 不是对象(评估'this.state.initialPosition') - React Native

TypeError:null 不是对象(评估“storagedTechs.split”)

如何解决:TypeError:null 不是对象(评估“AgoraRtcChannelModule.prefix”)?