【发布时间】:2019-08-07 21:11:55
【问题描述】:
使用深度嵌套的 React 上下文提供程序会遇到什么问题?
const AllContextProvider = props => {
return (
<UserProvider>
<ThemeProvider>
<NotifProvider>
<TimelineProvider>
<CertProvider>
<MenusProvider>
{props.children}
</MenusProvider>
</CertProvider>
</TimelineProvider>
</NotifProvider>
</ThemeProvider>
</UserProvider>
);
};
并像这样使用具有上下文依赖关系的嵌套提供程序:
import React, { useContext } from "react";
import { UserContext } from "./UserContext";
import { useLocalStoragePerUser } from "./useLocalStoragePerUser";
const MenusContext = React.createContext();
const { Provider } = MenusContext;
const MenusProvider = props => {
// Is this context dependencie always "re-trigger" the Menu Context Provider?
const { user } = useContext(UserContext);
// Menus Context
const [menu, setMenu] = useLocalStoragePerUser( "menus", {
icons: false,
labels: true,
leftMenu: true,
},
user
);
return (
<Provider value={{ menu, setMenu}} >
{props.children}
</Provider>
);
};
export { MenusProvider, MenusContext };
这种上下文依赖是否总是“重新触发”菜单上下文提供程序? => 特别是关于无用的重新渲染?
【问题讨论】:
标签: reactjs react-hooks