美文网首页
vue组件间传值问题总结

vue组件间传值问题总结

作者: 颂温暖 | 来源:发表于2019-06-25 12:34 被阅读0次

    vue项目中,组件间传值的问题总结:

    父传子

    父组件

    <template>
     <div>
      父组件
      <child :child="test"></child>
     </div>
    </template>
     
    <script>
     import child from './child'
     export default {
      data: () => ({
       test: ''
      }),
      components: {
       child
      },
      created () {
      },
      mounted () {
       // setTimeout模拟异步数据
       setTimeout(() => {
        this.test= 'test data'
        console.log('parent finish')
       }, 2000)
      }
     }
    </script>
    

    子组件

    <template>
     <div>
      子组件{{child}}
     </div>
    </template>
     
    <script>
     export default {
       props: ['child'],
       data: () => ({
       }),
       created () {
        console.log(this.child) // 空值
       },
       methods: {
       }
     }
    </script>
    

    上面父组件和子组件之间的传值是模拟接口请求数据,然后传值到子组件之后,created获取不到值
    解决办法是:使用v-if可以解决报错问题,和created为空问题

    父组件

    <template>
     <div>
      父组件
      <child :child="test" v-if="flag"></child>
     </div>
    </template>
     
    <script>
     import child from './child'
     export default {
      data: () => ({
       test: '',
       flag: false
      }),
      components: {
       child
      },
      created () {
      },
      mounted () {
       // setTimeout模拟异步数据
       setTimeout(() => {
        this.test= 'test data'
        this.flag = true       //  这里赋值之后设置flag为true,然后子组件进行v-if判断
        console.log('parent finish')
       }, 2000)
      }
     }
    </script>
    

    子组件 不变

    <template>
     <div>
      子组件{{child}}
     </div>
    </template>
     
    <script>
     export default {
       props: ['child'],
       data: () => ({
       }),
       created () {
        console.log(this.child) // 空值
       },
       methods: {
       }
     }
    </script>
    

    这样就可以解决父传子组件间的传值为空问题

    相关文章

      网友评论

          本文标题:vue组件间传值问题总结

          本文链接:https://www.haomeiwen.com/subject/mhjtcctx.html