React Hooks 和 useContext:这是一个好的模式吗?
React Hooks & useContext: Is This a Good Pattern?
我正在研究 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),
}
}
为什么不使用 reducer 并传递单个调度函数?
我相信它还建议您传递状态和分派是单独的上下文,否则调用分派将导致上下文中的所有内容重新呈现。
https://reactjs.org/docs/hooks-faq.html#how-to-avoid-passing-callbacks-down
我正在研究 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),
}
}
为什么不使用 reducer 并传递单个调度函数?
我相信它还建议您传递状态和分派是单独的上下文,否则调用分派将导致上下文中的所有内容重新呈现。
https://reactjs.org/docs/hooks-faq.html#how-to-avoid-passing-callbacks-down