【发布时间】:2020-03-30 15:28:58
【问题描述】:
为什么在 store 状态更改后,组件调度更新 react-redux 状态的操作会重新渲染?不应该只在 props 或组件状态发生变化时才重新渲染吗?
const BoxContainer=memo(({props})=>{
const dispatch = useDispatch();
//Setting action with dispatch with useCallBack hook for safe side
const callAction =useCallback(
(payload) => {
dispatch(payload)
},
[],
);
const structure = useSelector(state => ({...state.FormState}));
var form = generateForm(structure,callAction);
return(
<React.Fragment>
{form}
</React.Fragment>
);
});
Reducer 代码如下
export const FormState = (state = FormStructureState ,action) =>
{
switch(action.type){
case 'UPDATE':
return {
...state,
Structure:action.Payload
}
case 'MOVEITEM':
var sourceRow = action.sourceRow;
var sourceCol = action.sourceCol;
var destRow = action.destRow;
var destCol = action.destCol;
var destinationContent = state.Structure.row[destRow][destCol].content;
state.Structure.row[destRow][destCol].content = state.Structure.row[sourceRow][sourceCol].content;
state.Structure.row[sourceRow][sourceCol].content = destinationContent;
return {...state}
case 'SETTEMPLATE':
var sourceRow = action.sourceRow;
var sourceCol = action.sourceCol;
state.Structure.row[sourceRow][sourceCol].content.template = action.template;
default:
return {...state}
}
}
【问题讨论】: