所以我遇到了臭名昭著的 React Router v4 警告:
Warning: You should not use <Route component> and <Route children> in the same route; <Route children> will be ignored
这发生在包装我的组件之后,该组件本身<Route />
在我的 HOC 内部呈现一个提供我的 React 上下文的内容。
这一切看起来有点像这样:
App.js
:
<myContextProvider>
<Router>
<Switch>
<myLayout path="/foo" Component={someComponent}>
...
</Switch>
</Router>
</myContextProvider>
我的stores.js
文件包括以下内容:
export const withMainStore = (Component) => {
return (props) => {
return (
<MainConsumer>
{store => (
<Component {...store} {...props} />
)}
</MainConsumer>
)
}
}
myLayout.js
:
class myLayout extends React.Component {
const { Component, ...rest } = this.props;
// ...
render() {
return (
<Route {...rest} render={(props) => (
<Component {...rest} {...props} />
)}/>
)
}
}
export default withMainStore(myLayout)
我希望我在这里的整个情况有点清楚。有人可以向我解释为什么会出现警告吗?在我的整个应用程序中,我有类似的东西:<Route>...</Route>
- 我一直在使用<Route {...rest} render={(props) => ( ... )} />
!
所以我不知道为什么会这样。我必须处理我的withMainStore
HOC,因为当我删除它时,错误就消失了。但我仍然不明白为什么这会导致错误。