我正在尝试在react-router-dom(5.0.1)内部实现此逻辑。这是我的路线:
<Route
path="/available-days"
render={props => isAdmin ? Auth(UserProfileView) : <Redirect to='/dashboard'/>}
/>
当idAdmin
为true
时,将导致错误: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)
如果放入组件方法,效果很好。
答案 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'/>}
/>