1

所以我遇到了臭名昭著的 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) => ( ... )} />

所以我不知道为什么会这样。我必须处理我的withMainStoreHOC,因为当我删除它时,错误就消失了。但我仍然不明白为什么这会导致错误。

4

0 回答 0