Vue本机:尝试分配给只读属性

时间:2019-12-16 10:42:37

标签: react-native vue.js vuex asyncstorage

对于那些不知道的人-Vue Native是React Native的包装。您使用VueJS框架编写React Native应用。

问题: 我正在尝试使用AsyncStorage存储api列表,但出现错误“试图分配给只读属性”

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还是很陌生,所以我不知道自己在做什么错。

1 个答案:

答案 0 :(得分:1)

这是我缺乏监督的原因。 docs状态:

static setItem(key: string, value: string, [callback]: ?(error: ?Error) => void)

简单地说-使用AsyncStorage只能存储字符串。 在herehere之前已经解决了此问题。

解决方案很简单:

AsyncStorage.removeItem('APIs').then(() => {
    AsyncStorage.setItem('APIs', JSON.stringify(context.state.apiList));
});