首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >反应语境

反应语境
EN

Stack Overflow用户
提问于 2020-03-12 15:45:39
回答 1查看 305关注 0票数 1

我对反应环境有问题。现在,我只想传递‘’hello‘值,但不幸的是,它没有找到值。

这是我的背景:

代码语言:javascript
复制
import React from 'react';

const MovieContext = React.createContext();

class MovieProvider extends React.Component{

    constructor(props){
        super(props)

        this.state={

        };
    };

    render() { 
        return ( 
            <MovieContext.Provider value={'hello'}>
                {this.props.children}
            </MovieContext.Provider>
         );
    }
}

export {MovieProvider,  MovieContext};

下面是收集我的提供者的布局:

代码语言:javascript
复制
import React from 'react';
import Header from './Header';
import { MovieProvider } from './context';



class Layout extends React.Component{
    render(){
        return(

            <MovieProvider>
                <>
                    <Header/>
                    {this.props.children} 
                </>

            </MovieProvider>


        )
    }   
}

export default Layout;

这是我的索引,应该显示“hello”:

代码语言:javascript
复制
import React from 'react';
import Layout from '../components/Layout';
import {MovieContext} from '../components/context';

class Index extends React.Component{

    static contextType = MovieContext

    render(){

        const value = this.context;
        console.log(value)
        return(

            <div>
                <Layout>
                    {value}
                    <h1>Home Page</h1>
                </Layout>
            </div>
        )
    }
}

export default Index;

我试图将提供程序放在我的Index组件中,但不幸的是,它也不起作用。大部分时间我跟着医生走,我以为我做得很好,哈哈。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-12 15:53:27

valueIndex组件中无效,因为根据Context API,您必须在任何Context.Provider的子组件中使用Context.Consumer来引用上下文的值。

当React呈现订阅此上下文对象的组件时,它将从树中最接近的匹配提供程序读取当前上下文值。- 上下文API

代码语言:javascript
复制
class Layout extends React.Component {
  render() {
    return (
      <MovieProvider>
        <MovieContext.Consumer>
          {value => (
            <>
              {value}
              <h1>Home Page</h1>
            </>
          )}
        </MovieContext.Consumer>
      </MovieProvider>
    );
  }
}

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60657503

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档