Redux状态/子组件渲染触发器?

时间:2018-02-12 14:37:51

标签: reactjs redux react-redux

我有一个名为contacts的反应组件和名为' comments'的子组件。和' card'。这三个都连接到contactReducer

如果我为联系人写了一个减速器,如下所示:

const reducer = ( state = null, action = null ) => {
    switch (action.type) {
        case GET_CONTACT:
            return [
                ...state, 
                contact: action.payload
            ]
        case GET_CARD:
            return [
                ...state, 
                card: action.payload
            ]
        case GET_COMMENTS:
            return [
                ...state, 
                comments: [...action.payload]
            ]
        default:
            return state;
    }
}
export default reducer;

1.A) 每次子组件收到更新的道具时父组件是否都会呈现,因为它们都连接到contactReducer

1.B) 如果我以错误的方式解决这个问题,你会如何推荐它?

2) 在每个操作更新contactReducer之后,我是否最终得到以下对象,或者我离开了?

contactsReducer = {
    contact : {someData},
    card    : {someData},
    comments: [someData, someData, ...]
}

1 个答案:

答案 0 :(得分:2)

任何接收新对象作为道具或其状态发生变化的对象都会根据react的差异算法重新渲染。假设您没有覆盖componentShouldUpdate方法。

1a - 父级将从reducer接收新状态并重新呈现应该更改的任何内容。

1b / 2 - 在当前的实现中,您将拥有一个包含对象组合的数组,其中键的变化范围为contact, card, and comments。您应该查看redux的功能combineReducers并为每个键创建一个reducer。我强烈建议您观看Redux上的视频系列以查看设计模式,这将有很长的路要走 - video