Why do we need to export the connect method for it to work?

岁酱吖の 提交于 2020-01-10 03:17:05

问题


If i try to connect a component without exporting directly it fails to connect.

Example:

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

Why should this make any difference?


回答1:


connect doesn't do anything to the original component, rather it is the implementation of the High Order Component pattern: so it that takes a React component as an argument and returns another component by the performing the actions it need to do like providing the action creators and the state as props.

So when you return the component returned by dispatch, you actually return the correct component. The component that you pass to connect doesn't have the redux state and action creators available to it.

So you could think of connect to be written somthing like

const connect = (mapStateToProps, mapDispatchToProps) => {
    return (WrappedComponent) => {
         return class App extends React.Component {
               {/* some lifecycle optimizations here */}
               render() {

                    return (
                          <WrappedComponent {...this.props} {...mapStateToProps()} {...mapDispatchToProps()} />
                     )
               }

         }
    }

}


来源:https://stackoverflow.com/questions/46521880/why-do-we-need-to-export-the-connect-method-for-it-to-work

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!