Vue Native:试图分配给只读 属性
Vue Native: attempted to assign to readonly property
对于那些不知道的人 - Vue Native 是 React Native 的包装器。您使用 VueJS 框架编写 React Native 应用程序。
问题:
我正在尝试使用 AsyncStorage 存储 api 列表,但出现错误 "attempted to assign to readonly property".
api 列表如下所示:
apiList: [
{name: "api1", url: "https://example_url1"},
{name: "api2", url: "https://example_url2"},
]
用户可以向列表中添加 API。这是使用 VueX 操作完成的。
如果 api 不在列表中,则添加(推送)。
[ADD_API](context, { name, url }) {
let api = context.getters.getApiFromList(name);
if (name && url && !api) {
context.commit(APPEND_API_LIST, { name, url });
// AsyncStorage.removeItem('apiList', () => {
// AsyncStorage.setItem('apiList', context.state.apiList)
// });
AsyncStorage.removeItem('APIs').then(() => {
AsyncStorage.setItem('APIs', context.state.apiList);
});
}
},
添加AsyncStorage片段时出现错误。我是 React Native 的新手,所以我不知道自己做错了什么。
这是我的疏忽。 docs 状态:
static setItem(key: string, value: string, [callback]: ?(error: ?Error) => void)
简单地说 - 使用 AsyncStorage 只能存储字符串。
此问题已在 here and .
之前解决
解决方法很简单:
AsyncStorage.removeItem('APIs').then(() => {
AsyncStorage.setItem('APIs', JSON.stringify(context.state.apiList));
});
对于那些不知道的人 - Vue Native 是 React Native 的包装器。您使用 VueJS 框架编写 React Native 应用程序。
问题: 我正在尝试使用 AsyncStorage 存储 api 列表,但出现错误 "attempted to assign to readonly property".
api 列表如下所示:
apiList: [
{name: "api1", url: "https://example_url1"},
{name: "api2", url: "https://example_url2"},
]
用户可以向列表中添加 API。这是使用 VueX 操作完成的。 如果 api 不在列表中,则添加(推送)。
[ADD_API](context, { name, url }) {
let api = context.getters.getApiFromList(name);
if (name && url && !api) {
context.commit(APPEND_API_LIST, { name, url });
// AsyncStorage.removeItem('apiList', () => {
// AsyncStorage.setItem('apiList', context.state.apiList)
// });
AsyncStorage.removeItem('APIs').then(() => {
AsyncStorage.setItem('APIs', context.state.apiList);
});
}
},
添加AsyncStorage片段时出现错误。我是 React Native 的新手,所以我不知道自己做错了什么。
这是我的疏忽。 docs 状态:
static setItem(key: string, value: string, [callback]: ?(error: ?Error) => void)
简单地说 - 使用 AsyncStorage 只能存储字符串。
此问题已在 here and
解决方法很简单:
AsyncStorage.removeItem('APIs').then(() => {
AsyncStorage.setItem('APIs', JSON.stringify(context.state.apiList));
});