首页 文章

react-redux - 连接组件没有重新发布状态变化

提问于
浏览
2

我有一个组件,我通过 connect 传递 mapStateToProps 参数,将一个prop this.props.mainBuffer 映射到我商店的一个状态树片 . 当我更新状态的那部分时,只有组件不呈现 . (我意识到,redux的问题通常不会改变状态,但我觉得我已经这样做了) .

我的root(也是唯一的)reducer看起来像:

function rootReducer(state = {}, action) {

    switch (action.type) {
        case NEW_BUFFER:
            return Object.assign({}, {mainBuffer: action.samples})
        default:
            return state;
    }
}

连接组件连接如下:

export default connect((state) => ({
    mainBuffer: state.mainBuffer
}))(WaveformVisualizer);

我已经和react-redux合作了几个星期了,这一直都有用 . 通常,如果我指定状态树的切片 state.MainBuffer 并确保在reducer中不可更改地更新它,则组件将触发渲染 . 但它不再发生,我不明白为什么 .

1 回答

  • 1

    我相信我们在Reactiflux聊天 Channels 中设法解决了这个问题 . 列出的示例代码不太准确 - 真正的代码正在执行 Object.assign(state, {mainBuffer : action.samples}) ,这正在改变现有状态 . 解决方案是实际传递一个新的空对象作为第一个参数,如 Object.assign({}, state, {mainBuffer : action.samples}) . 等效的对象传播使用将是 return {...state, mainBuffer : action.samples} .

相关问题