如何使用 useContext 更改上下文的值?
2022-08-30 04:47:43
将钩子与 React 16.8+ 一起使用效果很好。您可以创建一个组件,使用钩子,并利用上下文值,而不会出现任何问题。useContext
我不确定如何对上下文提供程序值应用更改。
1) useContext 钩子是否严格意义上的一种使用上下文值的手段?
2) 有没有一种推荐的方法,使用 React 钩子,从子组件更新值,然后这将触发组件重新渲染任何使用钩子的组件与此上下文?useContext
const ThemeContext = React.createContext({
style: 'light',
visible: true
});
function Content() {
const { style, visible } = React.useContext(ThemeContext);
const handleClick = () => {
// change the context values to
// style: 'dark'
// visible: false
}
return (
<div>
<p>
The theme is <em>{style}</em> and state of visibility is
<em> {visible.toString()}</em>
</p>
<button onClick={handleClick}>Change Theme</button>
</div>
)
};
function App() {
return <Content />
};
const rootElement = document.getElementById('root');
ReactDOM.render(<App />, rootElement);
<div id="root"></div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.8.2/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.8.2/umd/react-dom.production.min.js"></script>