代码之家  ›  专栏  ›  技术社区  ›  Ali Zeynalov

每次操作后都会清除Redux存储

  •  0
  • Ali Zeynalov  · 技术社区  · 7 年前

    我是一个刚开始重做的人,有点麻烦。

    不知何故,每次操作后,我的整个存储都会被完全清除,只执行当前操作。我将用行动日志的屏幕截图来描述情况。

    以下是我的行动:

    function writeProduct(id) {
        return {
            type: 'WRITE_PRODUCT',
            id
        }
    }
    

    这是我的减速机:

    case 'WRITE_PRODUCT':
        console.log("WRITE PRODUCT ACTION: ", action);
        console.log("state: ",state);
        return {
            productID: action.id
        };
    

    这是在 dispatch 属于 writeProduct 行动

    https://cdn1.imggmi.com/uploads/2018/5/9/c4cfc7debab662dfe241889d86254cd1-full.png

    我做错了什么?为什么每次发货后都会覆盖以前的存储?

    2 回复  |  直到 4 年前
        1
  •  3
  •   user2213590 user2213590    7 年前

    您正在覆盖reducer中以前的状态。 您应该包括所有以前的状态,并且只更改减速器应该更改的内容。

    例如:。 在减速器中:

    return {
        ...state,
        productID: action.id
    };
    

    请注意 ...state 部分,其中包括结果中以前的所有状态。

    I'd suggest you review the redux docs on immutable updates

    此外,您的操作对象不符合FSA,您可能也应该了解这一点。

        2
  •  1
  •   Femi Oni    7 年前

    嗯,我不知道为什么整个商店都被摧毁了,但是

    case 'WRITE_PRODUCT':
    console.log("WRITE PRODUCT ACTION: ", action);
    console.log("state: ",state);
    return {
        productID: action.id
    };
    

    应该是

    case 'WRITE_PRODUCT':
     console.log("WRITE PRODUCT ACTION: ", action);
     console.log("state: ",state);
    return {
        ...state,
        productID: action.id
    };
    

    ``` state 传递给reducer函数

    推荐文章