What
Official React bindings for Redux
Usage
通过Provider将React根组件包裹起来
1
2
3
4
5
6
7
8
9
10import { Provider } from 'react-redux'
import store from './store'
import App from './App'
const rootElement = document.getElementById('root')
ReactDOM.render(
<Provider store={store}>
<App />
</Provider>,
rootElement
)通过connect组件将container组件与readux作绑定
1
2
3
4
5
6
7
8
9
10
11import * as actions from "./action";
export default connect(
state => { //映射当前需要的state,形参state是整个应用的
return {
counterData: state.Counter2
};
},
dispatch => {
return bindActionCreators({...actions,push}, dispatch); //将actionCreators绑上dispatch
}
)(Counter);
Provider
Context
提供了一个无需为每层组件手动添加 props,就能在组件树间进行数据传递的方法
。- 声明一个全局的ReactContext(ReactReduxContext)对象
- 创建一个Provider组件将children包裹起来,使children
无论在何层级都能拿到Provider的value
1 | //创建一个全局的ReactContext(ReactReduxContext)对象 |
connect
本质上是一个高阶组件
,返回一个新组件
- 新组件会监听store变化,如果变化则将获取最新state并
重新渲染
- mapStateProps保证新组件只设置
需要的state,而不是整个state
- mapDispatchToProps将结果作为props传入新组件
1 | export default function(mapStateProps, mapDispatchToProps) { |