所以我遇到臭名昭着的React Router v4警告:
Warning: You should not use <Route component> and <Route children> in the same route; <Route children> will be ignored
在包装我的组件之后会发生这种情况,组件本身在我的HOC中呈现<Route />
,它提供了我的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有一些东西,因为当我删除它时错误消失了。但我仍然不明白为什么会导致错误。