When I call an action, first time data is loaded perfectly fine. Component re-renders again and messes up the state.
Default State
JavaScript
x
6
1
menu_detail: {
2
error: null,
3
menu_id: 0,
4
detail: {}
5
}
6
Working State
JavaScript
1
9
1
menu_detail: {
2
error: null,
3
menu_id: 2,
4
detail: {
5
menu: {
6
7
}
8
}
9
After unexpected render
JavaScript
1
2
1
menu_detail: { }
2
My Code
JavaScript
1
13
13
1
const setMenuDetail = useStoreActions(actions => actions);
2
const getMenuDetail = useStoreActions(actions => actions.menu_detail.getMenuDetail);
3
const setMenuId = useStoreActions(actions => actions.menu_detail.setMenuId);
4
const menu_id = useStoreState(state => state.menu_detail.menu_id);
5
const menu = useStoreState(state => state.menu_detail.detail.menu);
6
// const menu_option_categories = useStoreState(state => state.menu_detail.menu_detail.menu_option_categories);
7
const { data } = props.location;
8
React.useEffect(() => {
9
setMenuId(parseInt(data));
10
getMenuDetail();
11
}, [menu]);
12
13
Advertisement
Answer
I Updated React.useEffect() to :
JavaScript
1
5
1
React.useEffect(() => {
2
setMenuId(parseInt(data));
3
getMenuDetail(2);
4
}, []);
5
Now it works.