Redux 如何在每次设置状态时重新渲染组件
我希望我的组件在每次调用“state.set(…)”时都能重新渲染,即使值不变。 嘿,伙计们,我有一个减速机,叫做每次调整屏幕大小: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){
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存储状态从来都不是一个好主意。