vue中利用prop进行父子通信时的注意事项总结

 更新时间:2022年01月17日 17:30:13   作者:龙仔like_code  
这篇文章主要给大家介绍了关于vue中利用prop进行父子通信时的注意事项,文中通过实例介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

注意点一

当在组件上传入一个普通的字符串时,我们可以直接这样写:

<one name="张三"></one>

需要注意的是,当我们想要传入数字时,我们需要使用v-bind绑定一个数字,否则无法识别数字,vue会认为你传入的是一个字符串数字。

特殊的值包括:向字符键传这些类型的数据时,都需要使用v-bind来告诉vue,我们传输的是静态的值。

  • 数字
  • 布尔值
  • 数组
  • 对象
   <one name="张三" :age="1"></one>

注意点二

当我们想要把一个对象的所有属性传给子组件时,我们可以这样写:

//要传输的对象
post: { id: 1, title: 'My Journey with Vue' }
//直接使用v-bind,将post对象的所有属性传递给子组件
<one v-bind='post'> </one>

子组件接收:

//直接接受父组件传过来的对象中的属性名即可
 props: ["id", "title"],

注意点三:单项数据流

所有的 prop 都使得其父子 prop 之间形成了一个单向下行绑定:父级 prop 的更新会向下流动到子组件中,但是反过来则不行。这样会防止从子组件意外变更父级组件的状态,从而导致你的应用的数据流向难以理解。

额外的,每次父级组件发生变更时,子组件中所有的 prop 都将会刷新为最新的值。这意味着你应该在一个子组件内部改变 prop。如果你这样做了,Vue 会在浏览器的控制台中发出警告。

这里有两种常见的试图变更一个 prop 的情形:

  • 这个 prop 用来传递一个初始值;这个子组件接下来希望将其作为一个本地的 prop 数据来使用。 在这种情况下,最好定义一个本地的 data property 并将这个 prop 用作其初始值:

    props: ['initialCounter'],
    data: function () {
      return {
        counter: this.initialCounter
      }
    }
  • 这个 prop 以一种原始的值传入且需要进行转换。 在这种情况下,最好使用这个 prop 的值来定义一个计算属性:

    props: ['size'],
    computed: {
      normalizedSize: function () {
        return this.size.trim().toLowerCase()
      }
    }

注意在 JavaScript 中对象和数组是通过引用传入的,所以对于一个数组或对象类型的 prop 来说,在子组件中改变变更这个对象或数组本身将会影响到父组件的状态。

注意点四

在使用组件时,如果我们在上面书写非props属性,那个这些属性会作为组件根元素上的自定义属性。 如果组件根元素上有同样属性,那个会被覆盖掉。使用组件时传入的值会作为最终的属性值。

class 和 style attribute 会稍微智能一些,即两边的值会被合并起来,从而得到最终的值。

如果我们不想让要这种默认将非props属性添加到组件的根元素上,我们可以在组件的选项中配置inheritAttrs: false。设置完以后非props属性将不在默认添加到根元素上。

其次,我们还可以结合$attrs,就可以手动决定这些非Props属性会被赋予哪个元素。

例如:可以将所有的属性赋值到标签中。

<template>
  <div class="one">
    <span v-bind="$attrs"></span>
  </div>
</template>

总结

到此这篇关于vue中利用prop进行父子通信时的注意事项的文章就介绍到这了,更多相关vue用prop父子通信内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 详解vue Router(v3.x) 路由传参的三种方式

    详解vue Router(v3.x) 路由传参的三种方式

    vue路由传参的使用场景一般都是应用在父路由跳转到子路由时,携带参数跳转,本文将详细介绍vue路由传参的三种方式,这三种传参方式只是针对vue Router V3版本的,需要的朋友可以参考下
    2023-07-07
  • Vue父组件和子组件之间数据传递和方法调用

    Vue父组件和子组件之间数据传递和方法调用

    vue组件在通信中,无论是子组件向父组件传值还是父组件向子组件传值,他们都有一个共同点就是有中间介质,子向父的介质是自定义事件,父向子的介质是props中的属性。
    2022-12-12
  • 详解vue-cli项目中用json-sever搭建mock服务器

    详解vue-cli项目中用json-sever搭建mock服务器

    这篇文章主要介绍了详解vue-cli项目中用json-sever搭建mock服务器,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-11-11
  • 详解vue-cli构建项目反向代理配置

    详解vue-cli构建项目反向代理配置

    本篇文章主要介绍了详解vue-cli构建项目反向代理配置,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-09-09
  • Vue router应用问题实战记录

    Vue router应用问题实战记录

    vue-router是vue.js官方的路由插件,他和vue.js是深度集成的适合构建单页面应用,下面这篇文章主要给大家介绍了关于Vue router应用问题的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2022-04-04
  • vue中优雅实现数字递增特效的详细过程

    vue中优雅实现数字递增特效的详细过程

    项目中需要做数字滚动增加的效果,一开始很懵,研究了一下原理,发现很简单,下面这篇文章主要给大家介绍了关于vue中优雅实现数字递增特效的详细过程,需要的朋友可以参考下
    2022-12-12
  • Vue声明式导航与编程式导航示例分析讲解

    Vue声明式导航与编程式导航示例分析讲解

    这篇文章主要介绍了Vue中声明式导航与编程式导航,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
    2022-11-11
  • Vue2.0/3.0双向数据绑定的实现原理详解

    Vue2.0/3.0双向数据绑定的实现原理详解

    这篇文章主要给大家介绍了关于Vue2.0/3.0双向数据绑定的实现原理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • Vue filter格式化时间戳时间成标准日期格式的方法

    Vue filter格式化时间戳时间成标准日期格式的方法

    今天小编就为大家分享一篇Vue filter格式化时间戳时间成标准日期格式的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-09-09
  • vue中的@click.native 原生点击事件

    vue中的@click.native 原生点击事件

    这篇文章主要介绍了vue中的@click.native 原生点击事件,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-04-04

最新评论