之前几乎有人问过类似的问题,但我无法解决这个问题,所以就在这里(我正在使用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);
我该怎么办?预先感谢!
答案 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();
}