【发布时间】:2019-07-11 07:54:41
【问题描述】:
在 React 16.8+ 中使用 useContext 钩子效果很好。您可以毫无问题地创建组件、使用钩子并利用上下文值。
我不确定的是如何将更改应用到 Context Provider 值。
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>
【问题讨论】:
标签: javascript reactjs react-hooks react-context