react--高阶组件connect

本文详细解析了Redux中connect高阶组件的使用方法,包括其参数mapStateToProps、mapDispatchToProps、mergeProps和options的作用,以及如何在函数组件和类组件中应用。通过实例展示了如何映射store状态到组件属性,帮助开发者更好地理解和使用Redux。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

connect串联model跟组件;connect这个函数本身可以传参,映射store的属性;

connect() 接收四个参数,它们分别是mapStateToProps , mapDispatchToProps , mergeProps options

const mapStateToProps = (state)=>{return {num:state.num;} }
export default connect(mapStateToProps)(组件名称)

state是model的state,项目开发中会直接解构;比如:

export default connect(({num,login})=>({num,login}))(组件名称)
@connect(({num,login})=>({num,login}))

两种写法意义是一样的,都是串联model跟组件;不同点:

  1. 前者是在函数组件中使用,后者是在类组件用,主要是因为函数组件内不能用@修饰器;
  2. 写的位置;前者是写在最后面,后者写在class类前

    用的时候你会发现页面有警告,这个是因为experimentalDecorators没有开启,用了typescript装饰器;打开vscode的setting,搜索experimentalDecorators,改为true就可以了
Experimental support for decorators is a feature that is subject to change in a future release. Set the 'experimentalDecorators' option in your 'tsconfig' or 'jsconfig' to remove this warning.ts(1219)

具体使用方法this.props.xx

@connect(({loading})=>({load:loading}))
class Test extends PureComponent {
  render() {
    const { load } = this.props;
    return (
      <Spin spinning = {load}></Spin>
    )
 }
参考:
别的博主的一些讲解:

上面的只能说是我浅薄的理解,刚开始接触,自己理解的可能也不太对;要是有不对,麻烦指出。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值