我目前正在尝试弄清楚如何避免在将我的应用程序包装在上下文提供程序中(从 useReducer 获取值)然后使用 useEffect 挂钩通过子组件更新时创建无限循环。
CodeSandbox 上有一个问题示例。
显然不在这里重新发布所有代码很难谈论这个问题,但关键点:
根:
function App() {
const [state, dispatch] = useReducer(reducer, initialState);
const value = { state, dispatch };
return (
<Context.Provider value={value}>
...
</Context.Provider>
孩子:
export const Page1: FC = () => {
const { dispatch, state } = useContext(Context);
const { isLoading } = state;
useEffect(() => {
dispatch({
type: "loading",
payload: false
});
}, [dispatch]);
return (...)
我可能遗漏了一些明显的东西,但任何指针都可以帮助遇到同样问题的其他人。