Я изучаю useContext с помощью React Hooks. Я хотел бы передать один объект, содержащий состояние приложения, контекстным потребителям, например:
<AppContextProvider.Provider value = {AppState}>
{props.children}
</AppContextProvider.Provider>
Конечно, мне нужно будет передать некоторые getters и setters, чтобы разрешить дочерним компонентам обновлять состояние приложения.
Является ли этот шаблон эффективным подходом — есть ли лучший шаблон?
const AppContext = React.createContext();
function AppContextProvider(props) {
const AppState = {
aVideoCallIsLive: [get, set] = useState(false),
channelName: [get, set] = useState(null),
localVideoStream: [get, set] = useState(null),
selectedBottomNavIndex: [get, set] = useState(-1),
loginDialogIsOpen: [get, set] = useState(false),
}
}





Почему бы не использовать редюсер и передать одну функцию диспетчеризации?
Я считаю, что также рекомендуется передавать состояние, а диспетчеризация - это отдельные контексты, в противном случае вызов диспетчеризации приведет к повторному рендерингу всего внутри контекста.
https://reactjs.org/docs/hooks-faq.html#how-to-avoid-passing-callbacks-down