zoukankan      html  css  js  c++  java
  • vue 组件 props 和event

    组件是可扩展的HTML元素,封装可重用的代码。

    使用祖册的组件,要确保在初初始化根实例之前注册组件

    注册的组件中,data必须是函数

    父组件通过props向子组件传递数据,子组件通过事件events给父组件发送消息。

    组件实例的作用域是孤立的

    props是单向绑定的:当父组件的属性变化时,将传递给子组件,但是不会反过来。这是为了防止子组件无意修改父组件的状态;每次父组件更新时,

    子组件的所有props都会更新为最新值,这意味着你不应该在子组件内部改变prop,如果你这么做了,Vue会在控制台给出警告

    为什么我们会有修改 prop 中数据的冲动呢?通常是这两种原因:

    1. prop 作为初始值传入后,子组件想把它当作局部数据来用;

    2. prop 作为初始值传入,由子组件处理成其它数据输出。

    对这两种原因,正确的应对方式是:

    1. 定义一个局部变量,并用 prop 的值初始化它:

      props: ['initialCounter'],
      data: function () {
      return { counter: this.initialCounter }
      }
    2. 定义一个计算属性,处理 prop 的值并返回。

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

    注意在 JavaScript 中对象和数组是引用类型,指向同一个内存空间,如果 prop 是一个对象或数组,在子组件内部改变它会影响父组件的状态

    非 Prop 属性

    所谓非 prop 属性,就是它可以直接传入组件,而不需要定义相应的 prop

    明确给组件定义 prop 是传参的推荐方式,但组件的作者并不总能预见到组件被使用的场景。所以,组件可以接收任意传入的属性,这些属性都会被添加到组件的根元素上。

    例如,第三方组件 bs-date-input,当它要和一个 Bootstrap 插件相互操作时,需要在这个第三方组件的 input 上添加 data-3d-date-picker 属性,这时可以把属性直接添加到组件上 (不需要事先定义 prop):

    <bs-date-input data-3d-date-picker="true"></bs-date-input>

    添加属性 data-3d-date-picker="true" 之后,它会被自动添加到 bs-date-input 的根元素上

  • 相关阅读:
    Tomcat基本使用
    XML、java解释XML、XML约束
    配置文件的读取
    jdbc操作数据库以及防止sql注入
    java中的枚举类
    maven阿里云中央仓库
    spring boot&&cloud干货系列
    数据库 锁机制
    MySql的优化步骤
    MYSQL 索引无效和索引有效的详细介绍
  • 原文地址:https://www.cnblogs.com/xiaofenguo/p/7473806.html
Copyright © 2011-2022 走看看