用HOC反应路由器渲染方法

时间:2019-09-20 07:11:45

标签: reactjs react-router react-router-dom

我正在尝试在react-router-dom(5.0.1)内部实现此逻辑。这是我的路线:

    <Route
      path="/available-days"
      render={props => isAdmin ? Auth(UserProfileView) : <Redirect to='/dashboard'/>}
      />

idAdmintrue时,将导致错误:Objects are not valid as a React child。 我也尝试过:

    <Route
      path="/available-days"
      render={props => isAdmin ? Auth(UserProfileView)({ ...props }) : <Redirect to='/dashboard'/>}
    />

然后我看到TypeError: Object(...)(...) is not a function。为什么我不能在render方法中使用HOC?如何使它起作用?顺便说一句,Auth(UserProfileView)如果放入组件方法,效果很好。

1 个答案:

答案 0 :(得分:1)

请勿在render方法内使用HOC,请参见https://reactjs.org/docs/higher-order-components.html

您可以尝试

const UserProfileViewWithAuth = Auth(UserProfileView)

<Route
   path="/available-days"
   render={props => isAdmin ? <UserProfileViewWithAuth {...props} /> : <Redirect to='/dashboard'/>}
/>