为什么我们需要导出 connect 方法才能工作?

IT技术 reactjs redux react-redux
2021-04-10 05:47:01

如果我尝试在不直接导出的情况下连接组件,则无法连接。

例子:

connect(mapstatetoprops, mapdispatchtoprops)(Componentx);
export default Componentx;

为什么这会有什么不同?

1个回答

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()} />
                     )
               }

         }
    }

}
杰出的。这很好地解释了它。
2021-06-14 05:47:01
很高兴它对你有帮助:)
2021-06-19 05:47:01