【发布时间】:2019-11-07 15:30:57
【问题描述】:
我已经在一个 react 应用中实现了 redux,但我对这种语法感到困惑:
connect(mapState)(MyComponent)
如果两个参数都传递给连接,为什么第二个参数需要在单独的大括号中?
【问题讨论】:
-
connect(mapState)返回一个函数,然后接受一个组件作为参数。
我已经在一个 react 应用中实现了 redux,但我对这种语法感到困惑:
connect(mapState)(MyComponent)
如果两个参数都传递给连接,为什么第二个参数需要在单独的大括号中?
【问题讨论】:
connect(mapState) 返回一个函数,然后接受一个组件作为参数。
所以你可能已经习惯了这种语法。只有你一步一步看清一切 这样想是对等的;
const enhancer = connect(mapState);
const YourConnectedComponent = enhancer(MyComponent);
因此,如果您不将连接的结果分配到变量中,而是直接使用它,那也是一样的,因为它是一个函数,您会将其视为:
const YourConnectedComponent = connect(mapState)(MyComponent)
【讨论】:
从技术上讲,您的组件将与redux 存储连接一次:
connect 已使用返回函数的 mapStateToProps 变量调用MyComponent 参数。来自reduxdocumentation:
connect() 函数将 React 组件连接到 Redux 存储。它向其连接的组件提供它需要从存储中获取的数据片段,以及它可以用来向存储分派操作的函数。
这样redux 将自动处理组件中的props 状态更改。
【讨论】: