情景介绍
业务需求得做一个刷题单选框的组件,选中错误自动显示正确的。思路父组件监听题目的变化更新选项list,子组件深度监听proprs数据,变化的时候及时更新视图。但是发现一个问题,判断题的选项是一样的导致我渲染第一个题的时候无法操作下一题的选项,组件没有更新视图。
解决办法:将子组件深度监听里的逻辑封装成方法,由父组件每次更新数据的时候强心渲染子组件,解决选项list一样的时候深度监听不调用方法。
父组件
<selectOptions ref="options" @ok="change"></selectOptions>
监听数据逻辑
this.$refs.options.updateOptions(this.optionList,this.answer,this.answerFlag);
子组件方法
之前错误的思路
watch:{
optionList: {
deep: true, // 需要深度监听
handler(newValue,oldValue){
// 更新数据
this.u_answer = this.answerFlag;
if(this.u_answer){
this.checkanswer = ['/']; // 回显的特殊处理
}else{
this.checkanswer = [];
}
this.value = [];
this.options = newValue;
}
},
},
新思路(忽略我的参数命名,写文章的时候方便。)文章来源:https://www.toymoban.com/news/detail-595568.html
// 更新数据
updateOptions(d,a,f){
console.log("刷新")
// 更新数据
this.u_answer = f;
if(a){
this.checkanswer = ['/']; // 回显的特殊处理
}else{
this.checkanswer = [];
}
this.value = [];
this.options = d;
},
最后完美解决问题
文章来源地址https://www.toymoban.com/news/detail-595568.html
到了这里,关于uni-app小程序父组件数据更新,实现自定义组件刷新视图的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!