基于 el-select
封装了一个 my-select
接受一个外部传入的api
,其中 request
是封装好了的 axios
请求函数
const getUserList = (data)=>{
return request({
data
})
}
<my-select :api="getUserList">
现在遇到一个场景, 要改变 其中的参数,改完后就重新渲染 select 我现在想了两个方案
手动更新外部
getUserList
const params = {name:xxx} this.getUserList = ()=>{ return request({ data:params }) }
2.传入
request
params
监听params
的改变 内部更新getUserList
<my-select :request="request" :params="params"> watch:{ params:{ handler(val){ this.getUserList = ()=>{ return request({ data:val }) } }, deep:true } }
总结下,就是传入一个业务 api
, 如何更加优雅的 去更新 组件内部 api
的参数值~
底层组件,最好让使用者 更加简单 易上手~
有点疑惑,
select
这种直接展示结果的组件,既然都是底层组件了,针对异步获取数据,直接业务使用方拿到结果后传给组件不就行了么,为什么还要大费周折把异步方法传入到组件内部去处理?个人认为你这里应该封装的是
getUserList
方法,然后参数变化的时候每次重新调用这个请求,而不是封装select