首页 > 解决方案 > 在状态 react-redux 中更新数组的正确时间

问题描述

我刚开始在 react 应用程序中使用 react-redux,我用 react-redux 制作的唯一项目是一个简单的 json 提取器和更新器,(这也是基于速成课程 LOL),现在我正在创建第二个简单的应用程序,甚至认为它确实如此不需要redux,并且可以完美地与react一起使用。所以这是单词/数字赤道。用户填写第一个和第二个输入,应用程序确定它们是否相等,然后将方程添加到方程的历史(以前的方程)。所以我的问题是我不知道什么时候应该更新previous equations数组,在减速器或生命周期方法(componentDidUpdate)中,在他更新生命周期方法的速成课程中,但我读到它也可以在减速器中。所以哪个是更好的做法

这个:

 export default function equateReducer(state = initialState, action) => {
     switch(action.type){
        case ADD_TO_EQUATIONS:
            return {
                ...state,
                equations: [...state, action.payload.equation]
            } 
     } 
 } 

或这个

componentDidUpdate(nextProps){
    if(nextProps.equation){
       this.props.equations.unshift(nextProps.equation)
    }
}

PS:我真的不知道生命周期方法中的更新是如何工作的(我的意思是它是如何获取 nextProps.equation 的)

标签: reactjsreduxreact-reduxlifecyclereducers

解决方案


Redux 背后的(一个)想法只是通过定义的动作改变状态

所以不是直接.unshift over equations array(我猜你是从mapDispatchToProps连接它),你应该调度一个动作来达到同样的结果(所以你的答案是:第一个选项看起来更好)

如果你认为 redux 对这个任务来说太过分了,看看 useReducer 钩子


推荐阅读