美文网首页
React Context传值

React Context传值

作者: clumsy钧 | 来源:发表于2019-01-07 17:33 被阅读12次

基本理念

用原生JS来观察

{
  let context = {};
  window.setContext = function(key, value) {
    context[key] = value;
  };
  window.f1 = function f1() {
    console.log(1);
    f2();
  };

  function f2() {
    console.log(2);
    f3();
  }

  function f3() {
    console.log(3);
    f4();
  }

  function f4() {
    console.log(4, context["n"]);
  }
}

将代码构建一个独立的作用域(其实就是闭包)
将外部的变量传递给独立作用域的变量(能访问到是因为暴露一个接口出来)

{
  window.setContext("n", 100);
  setTimeout(() => {
    window.f1();
  }, 1000);

  console.log("done");
}

React Context

API

const themeContext = React.createContext();
class App extends React.Component {
  change = () => {
    if (this.state.theme === "green") {
      this.setState({ theme: "red" });
    } else {
      this.setState({ theme: "green" });
    }
  };
  constructor() {
    super();
    this.state = {
      theme: "green"
    };
  }
  render() {
    return (
      <themeContext.Provider value={this.state.theme}>
        <div className="App">
          <button onClick={this.change}>换肤</button>
          <themeContext.Consumer>
            {theme => (
              <div>
                <Box theme={theme}>
                  <Button />
                </Box>
                <Box theme={theme}>
                  <Input />
                </Box>
              </div>
            )}
          </themeContext.Consumer>
        </div>
      </themeContext.Provider>
    );
  }
}

const rootElement = document.getElementById("root");
ReactDOM.render(<App />, rootElement);```

相关文章

  • React Context传值

    基本理念 用原生JS来观察 将代码构建一个独立的作用域(其实就是闭包)将外部的变量传递给独立作用域的变量(能访问到...

  • react 组件之间通讯传值的多种方法实现

    react组件传值,大概有下面几种方法: props context redux react-router 路由切...

  • 父子组件传值的方式

    父组件传值给子组件方式1、props2、context(高级用法)React的上下文-Context3、组件组合(...

  • React——context越级传值

    我们都知道,在React中数据可以以流的形式自上而下的传递,当你使用组件的时候,你可以看到组件的props属性会自...

  • React Native Context 传值

    组件间传值一般会以props的方式,需要一级一级的传值。 通过Context的方式也可以传值,需要引入PropTy...

  • go简记-context

    比较 传值传引用基本类型都是传值 context包 主要结构context 首先context是线程安全的 创建 ...

  • React-redux

    React-redux 底层:通过高阶组件 + context跨组件传值实现,用 包裹根元素, 解决了在组件中频繁...

  • useContext

    接收一个 context 对象(React.createContext 的返回值)并返回该 context 的当前...

  • react Hooks —— 用法

    概念: 接收一个 context 对象(React.createContext 的返回值)并返回该 context...

  • Composition API的使用

    目标 父子组件传值props 和 context 祖孙组件传值provice和inject 生命周期 on**...

网友评论

      本文标题:React Context传值

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