试图在localStorage中保存数据

时间:2017-07-26 05:31:02

标签: reactjs redux

在我的React应用程序中,从API获取一些数据后,我正在尝试将数据存储在localStorage以及我的redux存储中。

  

错误:操作必须是普通对象。使用自定义中间件进行异步   动作。

这是我的代码:

export const setDataInStore = (myData) => {

    return { 
        type: types.SET_MY_DATA,
        myData
    };
}

const setDataInLocalStorage = (myData) => {

        window.localStorage.myData = myData;
}

export const getMyData = () => {

    return (dispatch) => fetch('/api/mydata', fetchOptionsGet())
        .then((response) => {
            if (response.ok) {
                parseJSON(response)
                    .then(myData => {

                        dispatch(setDataInStore(myData));
                        dispatch(setDataInLocalStorage(myData));
                    })
            } else {
                // Handle error
            }
        })
}

问题在于setDataInLocalStorage功能。当我提出debuggers时,我发现我进入setDataInLocalStorage并且myData由API调用填充。

我在那里做错了什么?

1 个答案:

答案 0 :(得分:3)

dispatch期望返回一个操作对象。在这种情况下,setDataInLocalStorage不会返回dispatch执行任何操作的操作。

由于我们只想设置localstorage,我们可以将调度行更改为:

dispatch(setDataInStore(myData));
setDataInLocalStorage(myData);

我们将setDataInLocalStorage()视为正在调用的常规函数​​。