react-redux

2019-03-16  本文已影响0人  许小花花

一、概述

react-redux用于连接react与redux,无需再手动调用dispatch去更新页面状态。

二、使用

1、安装

npm install react-redux --save

2、程序中使用

1) Provider

使组件层级中的 connect() 方法都能够获得 Redux store。正常情况下,你的根组件应该嵌套在 <Provider> 中才能使用 connect() 方法。

ReactDOM.render(
  <Provider store={store}> 
    <MyRootComponent />
  </Provider>,
  rootEl
)

ReactDOM.render(
  <Provider store={store}>
    <Router history={history}>
      <Route path="/" component={App}>
        <Route path="foo" component={Foo} />
        <Route path="bar" component={Bar} />
      </Route>
    </Router>
  </Provider>,
  document.getElementById('root')
)
2) connect()
connect([mapStateToProps], [mapDispatchToProps], [mergeProps], [options])
App = connect(([mapStateToProps], [mapDispatchToProps], [mergeProps], [options])(App)

连接 React 组件与 Redux store。连接操作不会改变原来的组件类。反而返回一个新的已与 Redux store 连接的组件类。

三、 装饰器写connect

使用 babel-plugin-transform-decorators-legacy babel插件支持装饰器语法

npm install babel-plugin-transform-decorators-legacy

安装后,进入package.json进行配置(首先要安装eject 详情:eject修改webpack配置文档

// plugins配置项新增如下配置
[
        "@babel/plugin-proposal-decorators",
        {
          "legacy": true
        }
      ]

完成配置后,不再需要将需要使用connect函数的组件作为参数传入,改为如下书写方式

@connect(参数)
class App extends React.Component(
  render(){
    renturn <div>APP组件</div>
)

其中参数和原本书写的一样,一般第一个是函数,参数是state,函数体返回一个对象,key为传递给本组件的props属性名,value为state。第二个是一个对象,其中包含的属性为各个在本组件中需要调用的dispatch的actionCreators。一般在onClick中调用,然后调用dispatch,改变store中的state,组件接收的state也会随之改变。

上一篇 下一篇

猜你喜欢

热点阅读