Redux 如何在每次设置状态时重新渲染组件

Redux 如何在每次设置状态时重新渲染组件,redux,store,immutable.js,Redux,Store,Immutable.js,我希望我的组件在每次调用“state.set(…)”时都能重新渲染,即使值不变。 嘿,伙计们,我有一个减速机,叫做每次调整屏幕大小: import Immutable from 'immutable'; const initialState = Immutable.fromJS({ width: '' }); export default (state=initialState, action) => { switch(action.type){

我希望我的组件在每次调用“state.set(…)”时都能重新渲染,即使值不变。

嘿,伙计们,我有一个减速机,叫做每次调整屏幕大小:

import Immutable from 'immutable';

const initialState = Immutable.fromJS({
  width: ''
});     

 export default (state=initialState, action) => {
        switch(action.type){    
          case "SCREEN_RESIZE":            
            if(action.payload >= 768){
              return state.set('width', 'big');
            }
            else{
              return state.set('width', 'small');
            }    
          default:
          break;
      }
      return state;
    }
我将ImmutableJS与redux一起使用,因此我的存储是一个映射(每个还原器)的映射(整个存储)

问题是,只有当我们将“宽度”从“大”更改为“小”,或从“小”更改为“大”,即值更改时,我的组件才会重新渲染

我希望它重新渲染,即使我将宽度从“大”设置为“大”,或从“小”设置为“小”

我犯了什么错误吗

这是我的根

import { combineReducers } from 'redux-immutable';

import reducer1 from './reducer1_reducer';
import reducer2 from './reducer2_reducer';
import reducer3 from './reducer3_reducer';
import screenSize from './screenSize_reducer';
import reducer5 from './reducer5_reducer';
import rounting from './routerReducer';


const rootReducer = combineReducers({
  reducer1,
  reducer2,
  reducer3,
  screenSize,
  reducer5,
  routing
});

export default rootReducer;

如果要在每次调整屏幕大小时重新渲染,可能需要使组件的道具具有实际的屏幕尺寸,如下所示:

<MyRerenderableComp width={this.props.screenWidth} height={this.props.screenHeight} />

你的问题和这篇文章有点相似:


希望有帮助?

在React中,渲染与状态更改紧密耦合。在状态保持不变的情况下仍要渲染的任何特定原因?由于视口/屏幕大小的更改,您是否正在尝试重新渲染?完全正确。有一个组件在渲染时根据窗口大小计算其尺寸。因此,如果它没有重新渲染,它将保持不变。在减速机中设置宽度值,并使用选择器计算
big
/
small
。将派生数据保存在redux存储状态从来都不是一个好主意。