在声明的内联中导入时使用相同的JSX组件时出错

时间:2015-10-18 20:42:23

标签: javascript reactjs react-router react-jsx redux

我有一个简单的redux样板项目,当我导入顶级(智能)组件时,我遇到了不同的行为,而不是内联类声明。

创建类不会导致错误,但是当我将类提取到单独的文件时,我收到以下错误:

launch.bat

我已尝试内联整个文件,错误消失

Warning: Failed propType: Required prop `routerState` was not specified in `AppContainer`. Check the render method of `RoutingContext`.

这是project repo(超级条纹背面)。

// == Import ==================================================================
import AppContainer from '../containers/App.jsx';
// === Declare Inline =========================================================
import { connect } from 'react-redux';
import { Component, PropTypes } from 'react';


@connect(state => ({ routerState: state.router }))
class AppContainer extends Component {
  static propTypes = {
    children: PropTypes.node.isRequired,
    routerState: PropTypes.object.isRequired,
  }

  render() {
    return (
      <div className="container-fluid">
        <div className="row">
          <div className="col-xs-12">
            <h1>App</h1>
            {this.props.children}
          </div>
        </div>
      </div>
    );
  }
}
// ============================================================================

1 个答案:

答案 0 :(得分:0)

所以根据我的理解,因为你已经说过propTypes孩子和routerState是可以预料到的,但你在使用组件时还没有将它们用作propTypes,就像你一样将App组件作为propType传递到<Route />组件。

<Route path="/" component={AppContainer}>
  <IndexRoute component={Home} />
</Route>

我不确定您的App组件是否应该包含这些propTypes,因为您无法将它们传入。但是您应该能够通过将propType更改为this.props.children来检索PropTypes.node

您可以通过执行以下操作将道具传递到路由器组件中:

<Route path="myComponent/:name" component={MyComponent} />

名称&#39;是你想要的参数,并做: 在{MyComponent&#39;

中的this.props.params.name