是否有可能将上下文传递给React中的哑子组件?

时间:2017-06-19 15:27:48

标签: reactjs react-router

注意:这与我的问题无关,但我已查看this link

说我有我的应用程序组件:

import React, { Component, PropTypes } from 'react';

class App extends Component {
    // stuff & code
    <Header />
    // code & stuff
}

App.childContextTypes {
    router: Proptypes.object.isRequired;
}

然后我有一个Header组件我定义为常量

import React, { PropTypes } from 'react';

getPath() {
    const router = { this.context };
    return router.location.pathname; 
}

const Header = (props) => { 
    // header stuff
    <div>{getPath()}</div>
}

Header.contextTypes {
    router: Proptypes.object.isRequired;
}

以上所有都是虚拟代码,但简而言之,这就是我所拥有的。到目前为止,当我尝试访问标头中的路由器对象时,router对象为undefined。是否有可能以这种方式将道具传递给const并且未明确定义为React类的组件?

在我的反应项目中,我正在使用react-router。

1 个答案:

答案 0 :(得分:0)

您可以将上下文传递给无状态组件。 React docs

您将在第二个参数中获得上下文。

const Header = (props, context) => 
{
      console.log(context);
      return (<div></div>);
} 
Header.contextTypes = { 
    router: Proptypes.object.isRequired; 
}