我有一个简单的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>
);
}
}
// ============================================================================
答案 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