ReactJS开发笔记

react-redux

2019-08-18  本文已影响0人  钢笔先生

Time: 2019-08-18

使用语法

react-redux包可以使得React和Redux一起工作。只需要按照下面的方式就可以使用react-redux:

import React from 'react' 
import { render } from 'react-dom' 
import { createStore } from 'redux' 

import { Provider } from 'react-redux'

let store = createStore(todoApp) // todoApp是reducer

render(
  <Provider store={store}>
    <App />
  </Provider>,
  document.getElementById('root'))

这样就可以使得组件全都可以看到store了。

连接到store: connect方法

import connect from 'redux'

然后按照下面的方式使用connect

import { connect } from 'redux'

PhotosList = someComponent
PhotosList = connect(mapStateToProps)(PhotosList)

这里mapStateToProps是一个函数:

function mapStateToProps (state) {
  return { photos: state.photos }
}

// 等价于:
const mapStateToProps = state => ({
   photos: state.photos
})

这样就把store的属性值传递到组件的props上了。

类似的,还可以定义mapDispatchToProps函数,将用于分发行为的函数也传递到组件的props上。

如何在组件上使用

直接用this.props.xxx或者无状态组件时,用props.xxx即可使用。

行为的分发过程

connect()方法的第二个参数就是负责这个的,我们现在来定义mapDispatchToProps函数。

var PhotosList = connect(mapState, mapDispatch)(PhotosList)

function mapDispatchToProps (dispatch) {
  return {
    onPublishClick: function () {
      dispatch({ type: 'PUBLISH' })
    }
  }
}
// 用箭头函数的写法是:
const mapDispatchToProps = dispatch => ({
    onPublishClick: () => {
        dispatch({ type: 'PUBLISH' })
    }
})

然后在组件上就可以使用这些传递过来的props了。

<button onClick={() => this.props.onPublishClick()}>

END.

上一篇下一篇

猜你喜欢

热点阅读