在对小程序重构为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" />
)
}