从异步存储读取后无法调度操作

时间:2021-02-15 11:56:38

标签: javascript react-native redux react-redux asyncstorage

这是我的代码

export const getAsyncStorage = () => async dispatch => {
    try {
        const asyncStorage = await AsyncStorage.getItem('settings');
        const asyncStorageObject = asyncStorage != null ? JSON.parse(asyncStorage) : null;
        console.log(asyncStorageObject) // this logs an object, as expected
        dispatch({ type: GET_ASYNC_STORAGE, payload: asyncStorageObject })
    } catch (e) {
        console.log('Error in getAsyncStorage writing to AsyncStorage', e)
    }
}

这是我得到的错误

<块引用>

getAsyncStorage 写入 AsyncStorage ReferenceError 时出错:未定义有效负载

为什么会抛出“Payload not defined”?这对我来说没有任何意义。删除此行

dispatch({ type: GET_ASYNC_STORAGE, payload: asyncStorageObject })

解决了。当我改变这一行

dispatch({ type: GET_ASYNC_STORAGE, payload: asyncStorageObject })

dispatch({ type: GET_ASYNC_STORAGE, foo: asyncStorageObject })

我仍然收到相同的 payload 消息...不确定这是什么意思。 以下是我写信给 AsyncStorage 的方式:

export const writeAsyncStorage = () => async dispatch => {
    try {
        const settings = {...}
        await AsyncStorage.setItem('settings', JSON.stringify(settings));
        dispatch({ type: WRITE_ASYNC_STORAGE, payload: true, })
    } catch (e) {
        console.log('Error in onIntroDone writing to AsyncStorage', e)
    }
}

还有reducer

import {
    GET_ASYNC_STORAGE,
    ...
} from '../constants/actions';

const initialState = {
    ...
    asyncStorage: {}
};

const settings = (state = initialState, action) => {
    switch (action.type) {
        ...
        case GET_ASYNC_STORAGE:
            return {
                ...state,
                asyncStorage: payload.asyncStorage
            }
        default:
            return state;
    }
}

export default settings;

1 个答案:

答案 0 :(得分:0)

在您的减速器中,您必须输入 action.payload 而不是 payload.asyncStorage