应无所住,而生其心
排名
1
文章
872
粉丝
112
评论
163
net core webapi post传递参数
庸人 : 确实坑哈,我也是下班好了好几次,发现后台传递对象是可以的,但...
百度编辑器自定义模板
庸人 : 我建议换个编辑器,因为现在百度富文本已经停止维护了,用tinymec...
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术

vue刷新子组件数据。Vue在父组件点击条件筛选的时候刷新子组件数据。vue如何让子组件重新渲染

6937人阅读 2022/5/18 15:52 总访问:5416894 评论:0 收藏:0 手机
分类: 前端

Vue在父组件点击条件筛选的时候刷新子组件数据

比如像点击这块班级条件的时候下面的图表数据,就是不同平台的完成率数据要更新

下面这块数据是使用的组件,代码如下:

  1. <sys-use-chart-teacher v-if="queryParms.classID" :class-id="queryParms.classID"/>

这里使用了一个v-if是因为需要等classID有数据了才加载出来这个子组件,如果不加这个的话可能会出现班级id还没有的情况下组件就加载了。并且绑定了一个班级id,班级id在上面切换的时候会变化,这里我们如何在班级id发生变化后重新去刷新子组件数据呢,方法还是很多的。

我们这里使用watch 监听 props 中的值,当值发生变化后就重新去查询数据
核心代码如下:

  1. export default {
  2. props: {
  3. classId: {
  4. type: String,
  5. require: true,
  6. default: ''
  7. }
  8. }
  9. watch: { // watch 监听 props 中的值,当值发生变化后就重新去查询数据
  10. classId(newVal, oldVal) {
  11. if (newVal !== oldVal) {
  12. this.getEvaluateCompleteInfo()
  13. this.getLabRoomTotalInfo()
  14. this.getProductEduInfo()
  15. }
  16. }
  17. }
  18. ....
  19. }

vue如何让子组件重新渲染

上面那种情况除了可以使用watch来监听参数的变化,也可以让子组件重新加载的方法。

使用使用v-if、Vue内置的forceUpdate方法以及通过改变KEY值刷新都可以,推荐使用改变组件key刷新组件的方法,每次想重新渲染组件时,只需更新该组件的key即可。this.$forceUpdate()是强制更新视图。

通过更新组件key刷新组件的方法示例:

  1. <template>
  2. <sys-use-chart-teacher :key="componentKey" v-if="queryParms.classID" :class-id="queryParms.classID"/>
  3. </template>
  4. export default {
  5. data() {
  6. return {
  7. componentKey: 0,
  8. };
  9. },
  10. methods: {
  11. freshComponent() {
  12. this.componentKey += 1;
  13. //this.componentKey += new Date();
  14. }
  15. }
  16. }

每当我们调用freshComponent时,绑定在组件上面的componentKey就会被改变,当componentKey值改变的时候,Vue会销毁组件并创建一个新组件。


欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739。有需要软件开发,或者学习软件技术的朋友可以和我联系~(Q:815170684)

评价

vue.js+Layer实现表格数据绑定与更新

一:使用Vue.js绑定好数据与更新事件 使用v-on绑定好事件,在事件里边直接把该行数据传递进去,在更新方法里边就可以直接...

vue.js 实现省市联动

HTML代码&lt;divid=&quot;pro_citys&quot;&gt; 省:&lt;selectid=&quot;provice&quot;v-on:change=&quot;prochange()&quo...

vue.js常见问题

一:花括号当做字符串显示的问题1:检查下绑定到vue.js的id是否重复,如果id重复了,就有可能存在这种问题,因为有可能把数...

vue.js常用指令

v-html可以把字符串当成一个html来渲染,而不是原样输出Html类似.net mvc中的@Html.Raw()方法&lt;divv-html=&quot;item.tit...

干货!div滚动到一定位置就固定他。vue中实现一侧滚动到底部就固定

尊重原创:转载请注名出处div滚动到一定位置就固定他,例如左边的内容很多,右边的内容很少,如果不处理滚动到一定位置后右...

vue.js常用指令,事件绑定等,vue过滤器解析状态过滤器多个参数。vue表格状态解析。vue解析类型,element ui解析类型,状态,el-tag

按照html的编码显示:v-html&lt;div class=&quot;font_info&quot; v-html=&quot;item.Content&quot;&gt;{{item.Content}}&l...

vue.js if用法

vue.js if可以做一些判断例如我们要把下面这个输出varvm=newVue({ el:&quot;#content&quot;, data:{ titles:[&quot;小明...

vue.js 学习日记第一章-安装vue开发环境

官网:https://cn.vuejs.org/v2/guide/ 这是一篇学习性文章,不定时更新,用来记录我学习vue.js的过程。 首先,是v...

vue.js 学习日记第二章-在vue中编写function及一些简单指令

官网:https://cn.vuejs.org/v2/guide/ vue.js 学习日记第一章:http://www.tnblog.net/18323015640/article/details/2...

vue.js 学习日记第三章-vue中的简单事件及事件修饰符

官网:https://cn.vuejs.org/v2/guide/ vue.js 学习日记第二章:http://www.tnblog.net/18323015640/article/details/2...

vue.js 学习日记第四章-vue中文本框数据获取与绑定及computed计算属性

官网:https://cn.vuejs.org/v2/guide/ vue.js学习日记第三章: http://www.tnblog.net/18323015640/article/details/2...

vue.js 学习日记第五章-v-if和v-for指令的使用方式

官网:https://cn.vuejs.org/v2/guide/ vue.js学习日记第四章: http://www.tnblog.net/18323015640/article/details/2...

vue.js 学习日记第六章-vue组件初步学习

官网:https://cn.vuejs.org/v2/guide/ vue.js学习日记第五章: http://www.tnblog.net/18323015640/article/details/2...

vue.js学习日记第七章-搭建脚手架

官网:https://cn.vuejs.org/v2/guide/ vue.js学习日记第六章: http://www.tnblog.net/18323015640/article/details/2...

vue实现好友选中效果

逛过vue官网肯定会发现一个有趣的指令“v-for”,相比与以前拼接html代码确实要上档次一点,而且减少了工作量,先看一波效...

js时间格式化vue.js时间格式化,带T 时间格式化

也可以借助moment库, 参考:https://www.tnblog.net/aojiancc2/article/details/8079moment库有点大,推荐可以使用day.js...