【发布时间】:2018-09-02 12:24:08
【问题描述】:
我已经确定了在动作创建器中获取状态的 2 种模式,我想知道哪种模式更好:
- 使用 redux-thunk 和 getState
- 组件中的mapStateToProps,并在调用动作创建者时将状态传回Redux
每个示例:
class SomeComponent {
render() {
return (
<Button onPress={this.props.networkCall}/>
)
}
}
const mapDispatchToProps = {
networkCall: actions.networkCall,
}
export default connect(undefined, mapDispatchToProps)(SomeComponent)
export networkCall() {
return (dispatch, getState) => {
const { dataForNetworkCall } = getState().someReducer
dispatch(pending())
axios.get(`something/${dataForNetworkCall}/something2`)
.then(() => {
dispatch(success())
}
...
}
}
或
class SomeComponent {
render() {
const { networkCall, dataForNetworkCall } = this.props
return (
<Button onPress={networkCall(dataForNetworkCall)}/>
)
}
}
function mapStateToProps(state) {
const { dataForNetworkCall } = state.someReducer
return { dataForNetworkCall }
}
const mapDispatchToProps = {
networkCall: actions.networkCall,
}
export default connect(mapStateToProps, mapDispatchToProps)(SomeComponent)
export networkCall(dataForNetworkCall) {
return (dispatch) => {
dispatch(pending())
axios.get(`something/${dataForNetworkCall}/something2`)
.then(() => {
dispatch(success())
}
...
}
}
我觉得 2 是个坏主意,因为它涉及将状态传递给组件,只是为了将其传递回 Redux。但是,网上似乎有很多文章说选项 1 是一种反模式(包括Dan Abramov himself saying it is an anti-pattern)。那么,“最好”的方式是什么?
【问题讨论】:
标签: react-native redux react-redux redux-thunk