methods中传参包括默认参数event以及其他参数

        在对小程序重构为uni-app项目的过程中遇到一个问题。

情景:

        在某一个方法中设置了参数,但是在函数中又需要使用e.detail.xxx去获取其他的数据。

分析:

        如果说仅仅想在函数调用的时候将参数传递出去,在函数体中拿不到event;如果仅仅不传参默认选择传递event,然后从e.current.xxx中拿目标参数,这显然是不合理的,毕竟uni-app并不支持将参数写在标签中的方法。

        此时应该结合vue的写法,传参时手动传递一个$event参数,然后在函数体中接受并使用。

// template 中
<vt-select @select="bindSelect($event,sheetType)"></vt-select>


// script 中
bindSelect: function (e, type) {
    console.log(e)    // 输出event本体
    console.log(type) // 输出传递进来的type参数
}

        问题解决。

扩展:

        再介绍一下在react中解决传递默认参数event以及其他参数的两种方法,当是复习了。

        第一种方法: 通过箭头函数传参

savePassword = (dataType, event) => {
     this.setState({
         [dataType]: event.target.value
     })
}

render () {
    return (
        <input onChange={(e)=> this.savePassword('password', e)} type="password" name="password" />
    )
}

        第二种方法: 通过函数的柯里化,利用实际返回函数中的event

savePassword = (dataType) => {
    return (event) => {
        this.setState({
            [dataType]: event.target.value
        })
    }
}

render () { 
    return (
        <input onChange={this.savePassword('password')} type="password" name="password" />
    )
}

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值