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.