首页 > 专栏 > 前端 > 文章详情
React 中可以消费多个 Context 发布于:2021-03-27 08:09:21   来源:React   查看:3  讨论:0

消费多个 Context

为了确保 context 快速进行重渲染,React 需要使每一个 consumers 组件的 context 在组件树中成为一个单独的节点。
// Theme context,默认的 theme 是 “light” 值
const ThemeContext = React.createContext('light');
// 用户登录 context
const UserContext = React.createContext({
  name: 'Guest',
});
class App extends React.Component {
  render() {
    const {signedInUser, theme} = this.props;
    // 提供初始 context 值的 App 组件
    return (
        <ThemeContext.Provider value={theme}>
          <UserContext.Provider value={signedInUser}>
            <Layout />
          </UserContext.Provider>
        </ThemeContext.Provider>
    );
  }
}
function Layout() {
  return (
      <div>
        <Sidebar />
        <Content />
      </div>
  );
}
// 一个组件可能会消费多个 context
function Content() {
  return (
      <ThemeContext.Consumer>
        {theme => (
            <UserContext.Consumer>
              {user => (
                  <ProfilePage user={user} theme={theme} />
              )}
            </UserContext.Consumer>
        )}
      </ThemeContext.Consumer>
  );
}
如果两个或者更多的 context 值经常被一起使用,那你可能要考虑一下另外创建你自己的渲染组件,以提供这些值。

评论

  • 匿名