用上下文反应HOC - 不应在同一路线

时间:2018-05-29 12:06:50

标签: javascript reactjs react-router react-context

所以我遇到臭名昭着的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有一些东西,因为当我删除它时错误消失了。但我仍然不明白为什么会导致错误。

0 个答案:

没有答案