boz*_*mob 5 javascript javascript-objects reactjs react-native
我试图检查该条目是否存在于 AsycStore 中,如果不存在,则创建一个对象并设置它。\n并且有一个返回语句返回数据对象。
\n\n这是伪代码-
\n\nAsyncStorage.getItem("dataobject").then((do) => {\n if(do == undefined)\n {\n console.log("initializing obj + setting data");\n var dobj = "data object";\n dobj.isdirty = true;\n AsyncStorage.setItem("dataobject",dobj);\n }\n return AsyncStorage.getItem("dataobject");\n}).done();\n},\nRun Code Online (Sandbox Code Playgroud)\n\n我在控制台中收到错误 -
\n\nW/ReactNativeJS: \'Error: Attempted to assign to readonly property.\\n stack: \\n <unknown>\n\nindex.android.bun\xe2\x80\xa6:53047\\n tryCallOne \nindex.android.bun\xe2\x80\xa6:5094\\n <unknown> \nindex.android.bun\xe2\x80\xa6:5160\\n <unknown> \nindex.android.bun\xe2\x80\xa6:3399\\n callTimer \nindex.android.bun\xe2\x80\xa6:2954\\n callImmediates \nindex.android.bun\xe2\x80\xa6:3003\\n <unknown> \nindex.android.bun\xe2\x80\xa6:2523\\n guard \nindex.android.bun\xe2\x80\xa6:2452\\n __callImmediates \nindex.android.bun\xe2\x80\xa6:2523\\n <unknown> \nindex.android.bun\xe2\x80\xa6:2503\\n guard \nindex.android.bun\xe2\x80\xa6:2452\\n invokeCallbackAndReturnFlushedQueue index.android.bun\xe2\x80\xa6:2501\\n URL: http://localhost:8081/index.android.bundle?platform=android&dev=true\\n line: 53047\\n message: Attempted to assign to readonly property.\'\nRun Code Online (Sandbox Code Playgroud)\n\n我不太确定我要分配的只读属性是什么。被警告的行号是这一行 - "dobj.isdirty = true";
\n\n我不应该向对象添加属性吗?我该如何解决这个问题?正确的做法是什么?
\n\n截屏-
\n\n\n您可以通过使用 .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));
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
30785 次 |
| 最近记录: |