最佳答案
在 React 16.8 + 中使用 useContext
钩子效果很好。您可以创建一个组件,使用钩子,并毫无问题地利用上下文值。
我不确定的是如何对上下文提供程序值应用更改。
1) useContext 钩子严格来说是一种消费上下文值的方法吗?
2)有没有一种推荐的方法,使用 React Hook,来更新子组件的值,然后触发任何组件使用 useContext
Hook 在此上下文中重新呈现组件?
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>