从现在开始,我一直在使用Redux。感觉非常好。
我的一个难点是,在所有组件中使用connect
将states
和actions
映射到道具。
例如:
index.jsx
const uiStates = states => ({
ui: states.reducer,
})
const uiActions = dispatch => ({
actions: bindActionCreators({
...actions,
...APIs,
}, dispatch),
})
@connect(uiStates, uiActions)
export default class Root extends Component {
}
再次,在子组件中
child.jsx
const uiStates = states => ({
ui: states.reducer,
})
const uiActions = dispatch => ({
actions: bindActionCreators({
...actions,
...APIs,
}, dispatch),
})
@connect(uiStates, uiActions)
export default class Child extends Component {
}
相反,我可以将状态和动作作为道具从Root
传递给孩子吗?
const uiStates = states => ({
ui: states.reducer,
})
const uiActions = dispatch => ({
actions: bindActionCreators({
...actions,
...APIs,
}, dispatch),
})
@connect(uiStates, uiActions)
export default class Root extends Component {
render(){
return <Children {...this.props}/>
}
}
我已经尝试过了,效果很好。但是,这种方法有什么缺点吗?
作为一个优势,我知道,我不需要在所有组件中使用connect()
。