美文网首页
Context API

Context API

作者: kzc爱吃梨 | 来源:发表于2021-06-30 11:05 被阅读0次

    Context 提供了一个无需为每层组件手动添加 props,就能在组件树间进行数据传递的方法。

    在根部套一个const ThemeContext = React.createContext('light')的标签

    import React from "react";
    
    const ThemeContext = React.createContext('light');
    class App extends React.Component {
      render() {
        // 使用一个 Provider 来将当前的 theme 传递给以下的组件树。
        // 无论多深,任何组件都能读取这个值。
        // 在这个例子中,我们将 “dark” 作为当前的值传递下去。
        return (
          <ThemeContext.Provider value="dark">
            <Toolbar />
          </ThemeContext.Provider>
        );
      }
    }
    
    // 中间的组件再也不必指明往下传递 theme 了。
    function Toolbar() {
      return (
        <div>
          <ThemedButton />
        </div>
      );
    }
    
    class ThemedButton extends React.Component {
      // 指定 contextType 读取当前的 theme context。
      // React 会往上找到最近的 theme Provider,然后使用它的值。
      // 在这个例子中,当前的 theme 值为 “dark”。
      static contextType = ThemeContext;
      render() {
        return <Button theme={this.context} />;
      }
    }
    
    function Button(props) {
      return (
        <div>{props.theme}</div>
      )
    }
    
    效果图

    挂载在 class 上的 contextType 属性会被重赋值为一个由 React.createContext() 创建的 Context 对象。此属性能让你使用 this.context 来消费最近 Context 上的那个值。你可以在任何生命周期中访问到它,包括 render 函数中。

    相关文章

      网友评论

          本文标题:Context API

          本文链接:https://www.haomeiwen.com/subject/gsrkultx.html