解决vue父组件调用子组件只执行一次问题

 更新时间:2023年09月02日 10:41:03   作者:00后整顿职场  
开发中,需求是将内容展示作为一个组件,输入为contentId,请求在组件中,只需根据父组件传过来的contentId去请求内容的详情即可,但是过程中却发现一个问题,父组件调用子组件只执行一次,所以本文就给大家介绍解决vue父组件调用子组件只执行一次问题

一、问题

开发中,需求是将内容展示作为一个组件,输入为contentId,请求在组件中,只需根据父组件传过来的contentId去请求内容的详情即可。但是过程中却发现一个问题,第一次打开弹框,展示内容没问题,但是接下来的多次点击发现一直是第一次请求的数据,也就是说,内容详情并未再次发生改变。

二、原因

在父组件中引用的子组件标签上添加属性,来渲染可以拥有不同数据的子组件。但是vue 的组件有个特点,如果我们这一次和上一次传过去的属性值一样的话,watch 监听的属性因为没有新的变化(这次的值和上一次的值一样watch 中调用的函数不执行),导致对应的数据也没有变化。created() 生命周期函数也是只执行一次。但是有时候我们需要这个组件每次都重新生成dom 元素,每次都执行created() 函数。这时候就用到了vue中的key 属性。

三、解决方案

<template>
  <div>
    <div>
      <h1>父级</h1>
      <button @click="handleLoad">点击重新加载子级</button>
    </div>
    <children :key="timer"></children>
  </div>
</template>
<script>
  import children from '@/components/parent/children'
  export default {
    name: 'parent',
    components: { children },
    data () {
      return {
        timer: ''
      }
    },
    methods: {
      handleLoad () {
        this.timer = new Date().getTime()
      }
    }
  }
</script>

总结:

其实解决问题的本质只要可以让弹框这个dom元素每次打开重新加载一次,就会解决。

只要是一个变量即可促使dom刷新,例如:v-if、v-show、当前时间戳、或者在子组件使用watch监听

到此这篇关于解决vue父组件调用子组件只执行一次问题的文章就介绍到这了,更多相关vue父组件调用子组件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • vue中使用WX-JSSDK的两种方法(推荐)

    vue中使用WX-JSSDK的两种方法(推荐)

    这篇文章主要介绍了vue中使用WX-JSSDK的两种方法,每种方法通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-01-01
  • Vue前后端不同端口的实现方法

    Vue前后端不同端口的实现方法

    今天小编就为大家分享一篇Vue前后端不同端口的实现方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-09-09
  • element-ui时间日期选择器限制选择范围的几种场景

    element-ui时间日期选择器限制选择范围的几种场景

    这篇文章主要给大家介绍了关于element-ui时间日期选择器限制选择范围的几种场景,一般在实际开发场景中我们需要对时间选择做一些限制,如不能选择今天之前的时间、不能选择今天以后的日期、限制日期不能大于开始日期等等,需要的朋友可以参考下
    2023-08-08
  • 用vue快速开发app的脚手架工具

    用vue快速开发app的脚手架工具

    这篇文章主要介绍了用vue快速开发app的脚手架工具,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-06-06
  • vue.js循环radio的实例

    vue.js循环radio的实例

    今天小编就为大家分享一篇vue.js循环radio的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-11-11
  • Vue中如何把hash模式改为history模式

    Vue中如何把hash模式改为history模式

    这篇文章主要介绍了Vue中如何把hash模式改为history模式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07
  • vuejs使用axios异步访问时用get和post的实例讲解

    vuejs使用axios异步访问时用get和post的实例讲解

    今天小编就为大家分享一篇vuejs使用axios异步访问时用get和post的实例讲解,具有很好的参考价值。希望对大家有所帮助。一起跟随小编过来看看吧
    2018-08-08
  • el-select去掉placeholder属性的方法

    el-select去掉placeholder属性的方法

    当el-select的disabled属性为true的时候不展示“请选择”字样,如何去掉el-select 元素的 placeholder 属性呢,下面小编通过示例代码给大家分享el-select如何去掉placeholder属性,感兴趣的朋友一起看看吧
    2023-12-12
  • vue .then和链式调用操作方法

    vue .then和链式调用操作方法

    这篇文章主要介绍了vue .then和链式调用操作方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-07-07
  • Vue mixin实现组件功能复用示例详解

    Vue mixin实现组件功能复用示例详解

    这篇文章主要为大家介绍了Vue mixin实现组件功能复用示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-10-10

最新评论