如果我尝试在不直接导出的情况下连接组件,则无法连接。
例子:
connect(mapstatetoprops, mapdispatchtoprops)(Componentx);
export default Componentx;
为什么这会有什么不同?
如果我尝试在不直接导出的情况下连接组件,则无法连接。
例子:
connect(mapstatetoprops, mapdispatchtoprops)(Componentx);
export default Componentx;
为什么这会有什么不同?
connect
不对原始组件做任何事情,而是高阶组件模式的实现:因此它将一个 React 组件作为参数,并通过执行它需要做的动作来返回另一个组件,例如提供动作创建者和状态作为props。
所以当你返回dispatch返回的组件时,你实际上返回了正确的组件。您传递给的组件connect
没有redux state and action creators
可用的组件。
所以你可以想到 connect 应该写成类似的东西
const connect = (mapStateToProps, mapDispatchToProps) => {
return (WrappedComponent) => {
return class App extends React.Component {
{/* some lifecycle optimizations here */}
render() {
return (
<WrappedComponent {...this.props} {...mapStateToProps()} {...mapDispatchToProps()} />
)
}
}
}
}