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