代码之家  ›  专栏  ›  技术社区  ›  cosmichero2025

无法从React.Context API获取提供程序数据

  •  0
  • cosmichero2025  · 技术社区  · 7 年前

    我试图学习react的上下文api,但我想我对它的一些原则感到困惑。我跟着的那些图特根本不管用。我的反应是正确的。

    上下文.js

    import React, { Component } from "react";
    
    const MyContext = React.createContext();
    
    export default class MyProvider extends Component {
      state = {
        userName: 'Kelly'
      };
    
      render() {
        return(
          <MyContext.Provider context={{
            value: this.state.value
          }}>{this.props.children}</MyContext.Provider>
        );
      }
    }
    

    应用jsx

    import React from 'react';
    import MyProvider from '../Context';
    
    const App = () => {
      return(
        <MyProvider>
          <MyContext.Consumer>
            {context => (
              <p>{context}</p>
            )}
          </MyContext.Consumer>
          </MyProvider>
      );
    }
    
    export default App;
    
    1 回复  |  直到 7 年前
        1
  •  1
  •   simbathesailor    7 年前

    它实际上是有效的,您传递上下文值的方式是不正确的。请检查以下链接 context example

    const MyContext = React.createContext();
    
    class MyProvider extends React.Component {
      state = {
        userName: 'Kelly'
      };
    
      render() {
        return(
          <MyContext.Provider value={this.state.userName}>                           
               {this.props.children}
          </MyContext.Provider>
        );
      }
    }
    
    class App extends React.Component {
      render() {
        return(
        <MyProvider>
          <MyContext.Consumer>
            {context => (
              <p>{context}</p>
            )}
          </MyContext.Consumer>
        </MyProvider>
      );  
      }
    
    }
    ReactDOM.render(<App />, document.getElementById("root"))
    

    希望这有帮助!!