【发布时间】:2017-07-20 06:33:32
【问题描述】:
首先,一些上下文。
我正在使用 Redux 来管理我的应用的身份验证状态,并将 Auth 作为 Redux 容器(或智能组件)。
我创建了一个包装器(一个高阶组件),它接受 Auth 并返回它:
export default function AuthWrapper(WrappedComponent) {
class Auth extends Component {
... <Auth stuff here> ...
}
return connect(mapStateToProps, mapDispatchToProps)(Auth);
}
在我看来,为了使用包装器,我只需要使用我想要在我的身份验证后面拥有的组件来调用它。例如,假设我正在使用包装器验证名为 UserPage 的组件,à la:
const AuthenticatedUserPage = AuthWappper(UserPage)
但是,当我像这样使用包装器时,React 对我并不满意。我收到以下错误:
Warning: AuthenticatedApp(...): A valid React element (or null) must be returned. You may have returned undefined, an array or some other invalid object.
我最好的猜测是它不喜欢 Redux 将创建的 connect-ified 组件,当我从 AuthWrapper... 返回它时,这引出了我的问题:
当这些组件创建 Redux 容器时,React 是否支持高阶组件?如果是这样,为什么 React 会抛出这个错误?
【问题讨论】:
标签: javascript reactjs redux higher-order-components