React Native:尝试分配给只读 属性
React Native : Attempted to assign to readonly property
我正在尝试检查该条目是否存在于 AsycStore 中,如果不存在,我将创建一个对象并进行设置。
并且有一个 return 声明 return 是数据对象。
这是伪代码-
AsyncStorage.getItem("dataobject").then((do) => {
if(do == undefined)
{
console.log("initializing obj + setting data");
var dobj = "data object";
dobj.isdirty = true;
AsyncStorage.setItem("dataobject",dobj);
}
return AsyncStorage.getItem("dataobject");
}).done();
},
我在控制台中遇到错误 -
W/ReactNativeJS: 'Error: Attempted to assign to readonly property.\n stack: \n <unknown>
index.android.bun…:53047\n tryCallOne
index.android.bun…:5094\n <unknown>
index.android.bun…:5160\n <unknown>
index.android.bun…:3399\n callTimer
index.android.bun…:2954\n callImmediates
index.android.bun…:3003\n <unknown>
index.android.bun…:2523\n guard
index.android.bun…:2452\n __callImmediates
index.android.bun…:2523\n <unknown>
index.android.bun…:2503\n guard
index.android.bun…:2452\n invokeCallbackAndReturnFlushedQueue index.android.bun…:2501\n URL: http://localhost:8081/index.android.bundle?platform=android&dev=true\n line: 53047\n message: Attempted to assign to readonly property.'
我不太确定我要分配的只读 属性 是什么。被警告的行号是这一行 - "dobj.isdirty = true";
我不应该向对象添加 属性 吗?我该如何解决这个问题?正确的做法是什么?
截图-
您可能可以使用 .catch 来完成此操作,如果那里没有值,它应该抛出。类似于:
AsyncStorage.getItem("dataobject")
.then((do) => {
this.setState({
myData: do.toJSON();
})
})
.catch(() => {
console.log("initializing obj + setting data");
var dobj = {};
dobj.isdirty = true;
AsyncStorage.setItem("dataobject",JSON.stringify(dobj));
});
dobj 是字符串还是对象?
var dobj = "data object";
dobj.isdirty = true;
在第二行中,dobj.isdirty 未定义,您正在尝试设置它("undefined" 是 JS 的只读 属性)。
现在如果你想做
var dobj = {};
dobj.isdirty = true;
那么你应该这样做
var dobj = {};
dobj['isdirty'] = true;
或
var dobj = {isdirty: true};
我正在尝试检查该条目是否存在于 AsycStore 中,如果不存在,我将创建一个对象并进行设置。 并且有一个 return 声明 return 是数据对象。
这是伪代码-
AsyncStorage.getItem("dataobject").then((do) => {
if(do == undefined)
{
console.log("initializing obj + setting data");
var dobj = "data object";
dobj.isdirty = true;
AsyncStorage.setItem("dataobject",dobj);
}
return AsyncStorage.getItem("dataobject");
}).done();
},
我在控制台中遇到错误 -
W/ReactNativeJS: 'Error: Attempted to assign to readonly property.\n stack: \n <unknown>
index.android.bun…:53047\n tryCallOne
index.android.bun…:5094\n <unknown>
index.android.bun…:5160\n <unknown>
index.android.bun…:3399\n callTimer
index.android.bun…:2954\n callImmediates
index.android.bun…:3003\n <unknown>
index.android.bun…:2523\n guard
index.android.bun…:2452\n __callImmediates
index.android.bun…:2523\n <unknown>
index.android.bun…:2503\n guard
index.android.bun…:2452\n invokeCallbackAndReturnFlushedQueue index.android.bun…:2501\n URL: http://localhost:8081/index.android.bundle?platform=android&dev=true\n line: 53047\n message: Attempted to assign to readonly property.'
我不太确定我要分配的只读 属性 是什么。被警告的行号是这一行 - "dobj.isdirty = true";
我不应该向对象添加 属性 吗?我该如何解决这个问题?正确的做法是什么?
截图-
您可能可以使用 .catch 来完成此操作,如果那里没有值,它应该抛出。类似于:
AsyncStorage.getItem("dataobject")
.then((do) => {
this.setState({
myData: do.toJSON();
})
})
.catch(() => {
console.log("initializing obj + setting data");
var dobj = {};
dobj.isdirty = true;
AsyncStorage.setItem("dataobject",JSON.stringify(dobj));
});
dobj 是字符串还是对象?
var dobj = "data object";
dobj.isdirty = true;
在第二行中,dobj.isdirty 未定义,您正在尝试设置它("undefined" 是 JS 的只读 属性)。
现在如果你想做
var dobj = {};
dobj.isdirty = true;
那么你应该这样做
var dobj = {};
dobj['isdirty'] = true;
或
var dobj = {isdirty: true};