1

我正在useContext使用 React Hooks 学习。我想将包含应用程序状态的单个对象传递给上下文消费者,例如:

<AppContextProvider.Provider value={AppState}>
  {props.children}
</AppContextProvider.Provider>

当然,我需要传递一些getterssetters启用子组件来更新应用程序状态。

这种模式是一种有效的方法吗——有更好的模式吗?

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),
    }
}
4

1 回答 1

3

为什么不使用 reducer 并传递单个调度函数?

我相信它还建议您传递状态和调度是单独的上下文,否则调用调度将导致上下文中的所有内容重新呈现。

https://reactjs.org/docs/hooks-faq.html#how-to-avoid-passing-callbacks-down

https://reactjs.org/docs/hooks-reference.html#usereducer

于 2019-02-24T03:25:36.240 回答