【发布时间】:2020-04-10 12:13:13
【问题描述】:
我有一个非常简单的组件,但由于某种原因它无限更新更新。除了反应更新组件,我什么都没有改变。为什么?
我的行动:
export function getMouseMenuButtons() {
const a = {
bold: {
id: 1,
name: 'bold',
children: {
bold: {
id: 1,
name: 'bold',
},
calendar: {
id: 2,
name: 'calendar'
},
}
},
}
return {
type: MOUSE_MENU_BUTTONS_GET,
payload: a
}
}
我的减速机:
export default function (state={}, action: any) {
switch (action.type) {
case MOUSE_MENU_BUTTONS_GET:
return {...state, map: action.payload};
default: return state;
}
}
还有我的组件
const MenuCircles = (props: Props) => {
useEffect(() => {
props.dispatch(getMouseMenuButtons())
}, [props.buttons]);
return (
<React.Fragment>
dfdf
</React.Fragment>
);
};
function mapStateToProps(state: State) {
const buttons = state.mouseMenu && state.mouseMenu.map;
return { buttons };
}
export default connect(mapStateToProps)(MenuCircles);
为什么它总是更新。在 useEffect 中,我检查 props.buttons。他们总是一样的
【问题讨论】:
-
这意味着你的reducer在每次调度动作时在
mouseMenu中组成新数组。useEffect通过引用检查依赖关系,因此它在每次重新渲染时都是新的。 -
谢谢。添加了减速器代码,这是标准的。如何解决重启问题?
标签: javascript reactjs redux use-effect