为了账号安全,请及时绑定邮箱和手机立即绑定

react-redux @connect()写法和connect()(App)有什么区别?

react-redux @connect()写法和connect()(App)有什么区别?

潇湘沐 2018-08-18 11:32:36
react-redux里@connect为什么可以直接拿到对象里的属性,而connect(mapStateToProps, mapDispatchToProps)(App)必须要手动才能拿到对象里的属性?比如:const initialState = {     isAuth: false,     username: 'ok' } export function auth(state=initialState, action){     ... }@connect(     state => state.auth )class App extends Component{     render(){        return(             {this.props.isAuth ? '<button></button>' : ''}             ...         )     } }在这里使用装饰器的写法,可以直接拿到isAuth.但是改成mapStateToProps要拿到isAuth就必须换成这种写法:const mapStateToProps = state => {     return{         isAuth: state.auth.isAuth     } } 下面这种写法拿不到isAuth, const mapStateToProps = state => {     return{         auth: state.auth     } } 在组件中加上this.props.auth.isAuth才能对isAuth进行判断问题是@connect对auth这个对象做了什么,让我们不用写isAuth: state.auth.isAuth就可以拿到isAuth?
查看完整描述

1 回答

?
函数式编程

TA贡献1807条经验 获得超9个赞

@connect(    state => state.auth
)

@connect接受一个函数作为参数,将这个函数的返回值对象展开传给组件,即作为组件的props


查看完整回答
反对 回复 2018-08-19
  • 1 回答
  • 0 关注
  • 2467 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信