React-Redux
react-radux就是将所有组件分成两大类:
UI 组件(presentational component)和容器组件(container component),以便于更好的优化和管理代码。
UI组件
我的理解是,它就是单纯的对页面的渲染,不负责逻辑的运行,无状态,并且通过父级的props拿到数据state
容器组件
它用来写业务逻辑各方面的数据管理,不负责进行对页面的渲染
在react-redux中容器组件是react-redux自动生成的,而使用者只需要编写UI组件即可
connect()方法
connect(mapStateToProps, mapDispatchToProps, mergeProps, options = {})
它的作用可以理解为是讲react组件与redux进行连接的
connect方法接受两个参数:mapStateToProps和mapDispatchToProps。它们定义了 UI 组件的业务逻辑。
mapStateToProps负责输入逻辑,将store中的state映射到 UI 组件的参数(props)。
mapDispatchToProps负责输出逻辑,将用户对 UI 组件的操作映射成 Action。
connect是如何实现的呢?
他通过Provider所传递的store,然后获取数据state,在通过一个构造函数将拿到的state返回成一个对象的属性,以便于容器组件的读取,并且可以再store数据更新后,重新获取数据。
Provider
它是react-redux 提供的一个 React 组件。用来接收store中的state,并且作为props通过context对象传递给子组件。
用法:
在根组件外层包裹,如下代码
import store from "./store"
import {Provider} from "react-redux"
ReactDOM.render(
<Provider store={store}>
<App />
</Provider>, document.getElementById('root'));
这样就可以使整个项目的组件成为Provider 的子组件,并通过props获取数据。
纯属个人理解。有误请指出