【发布时间】:2017-09-27 04:04:50
【问题描述】:
我有一个组件,我通过 connect 传递了一个带有 mapStateToProps 参数的组件,以将一个道具 this.props.mainBuffer 从我的商店映射到我的状态树的一部分。当我更新状态的那部分时,只有组件没有呈现。 (我意识到 redux 的问题通常不是一成不变地改变状态,但我觉得我已经做到了)。
我的根(也是唯一的)reducer 看起来像:
function rootReducer(state = {}, action) {
switch (action.type) {
case NEW_BUFFER:
return Object.assign({}, {mainBuffer: action.samples})
default:
return state;
}
}
而connect组件是这样连接的:
export default connect((state) => ({
mainBuffer: state.mainBuffer
}))(WaveformVisualizer);
我已经使用 react-redux 几个星期了,这一直有效。通常,如果我指定状态树的一部分 state.MainBuffer 并确保在 reducer 中不可变地更新它,组件将触发渲染。但它不再发生,我不明白为什么。
【问题讨论】:
-
你在 rootReducer 中尝试过 console.log(action) 吗?检查您的
dispatch方法是否被调用。 -
reducer 肯定在运行 NEW_BUFFER 案例,我已经运行了 redux 开发工具,我看到每个动作调度的状态变化差异
-
酷。
WaveformVisualizer里的道具呢? -
如何更新
action.samples?值或参考值是否在变化? -
你能发布你的组件代码吗?