美文网首页
Vue实践与总结——组件与数据

Vue实践与总结——组件与数据

作者: xymspace | 来源:发表于2020-06-27 19:07 被阅读0次

Vue实现组件化流程

  • Vue提供了一套构建组件的API,用于声明和实现 根组件可复用组件
  • Vue库提供了名为Vue的构造函数,用于初始化Vue实例
  • Vue的实例往往是根组件对象,组件在构建时,可以传入配置数据,用于构建组件的基本结构和功能。这种行为叫做Options API(封装实现,传入参数,生成组件)。
    • Options API
      • 通过配置模板参数template:,填充组件内容,生成有内容的组件
      • app.$mount()指定渲染后的结果(结构)所在的 DOM 结构的位置。vm.$mount()官网解释
let app = new Vue({
  template:`<div>hello world</div>`
})
app.$mount('#app')
  • 总体步骤:组件-->通过(template)-->DOM-->挂载到页面中指定位置

注意:组件生成的结构(DOM)会替换掉挂载点元素,所以挂载点不可以是html、body。

组件对数据的处理

  • 存储在data对应的对象中。
  • 数据必须是一个对象。
let app = new Vue({
  template:`<div>hello world</div>`
  data:{
    name:'xiaoming'
  }
})
app.$mount('#app')
  • Vue内部会遍历data对象,将data中的值交给Vue实例持有(挂载到实例对象)。
  • _开头的属性或方法,不建议访问(JS难实现私有)。$开头的属性或方法,Vue对外提供访问。

组件化规则

  1. 符合HTML标签命名规则
  2. 不能与原生HTML标签重名

可复用组件类型

  • 全局组件:通过Vue.component 创建,在Vue的任何地方都可访问
  • 局部组件:组件的options中有一个选项components,可用来定义组件,可定义多个组件,每个组件就是一个key-value的映射
    : 局部定义组件只能在当前的组件中才能使用,其他地方,包括组件的子级也不能使用。

组件的属性传递

类似给函数定义形参

props: ['name', 'age'],
props谁定义谁修改。遵循单向数据流原则。
子类通过 $emit('change',属性名) 的事件方式通知父类,父类修改属性值

  • 组件内部可以通过computed(计算)、watch(监听),动态改变属性的状态
data() { 
  return {
  // 可以访问到props
  name:'xiaoming',
  age:18
  }
}
computed: {
    // 仅读取
    aDouble: function () {
      return this.a * 2
    },
    // 读取和设置
    aPlus: {
      get: function () {
        return this.a + 1
      },
      set: function (v) {
        this.a = v - 1
      }
    }
  }
watch: {
    a: function (val, oldVal) {
      console.log('new: %s, old: %s', val, oldVal)
    },
    // 方法名
    b: 'someMethod',
    // 该回调会在任何被侦听的对象的 property 改变时被调用,不论其被嵌套多深
    c: {
      handler: function (val, oldVal) { /* ... */ },
      deep: true
    },
    // 该回调将会在侦听开始之后被立即调用
    d: {
      handler: 'someMethod',
      immediate: true
    },
    // 你可以传入回调数组,它们会被逐一调用
    e: [
      'handle1',
      function handle2 (val, oldVal) { /* ... */ },
      {
        handler: function handle3 (val, oldVal) { /* ... */ },
        /* ... */
      }
    ],
    // watch vm.e.f's value: {g: 5}
    'e.f': function (val, oldVal) { /* ... */ }
  }

非 prop 特性

一个非 prop 特性是指传向一个组件,但是该组件并没有相应 prop 定义的特性,这些 props 会被自动添加到组件的根元素上。

替换/合并已有的特性

默认情况下,非prop 特性的属性会覆盖组件根元素上同名的内容,但是针对 styleclass 有特殊的处理,它们会合并(同名样式还是会覆盖)。

禁用特性继承

如果你不希望组件的根元素继承特性,你可以在组件的选项中设置 inheritAttrs: false,我们可以通过组件的 this.$attrs 来获取这些属性。

注意 inheritAttrs: false 选项不会影响 styleclass 的绑定。

动态组件

  • componentvue 内置的一个组件,它提供一个 is 属性用来动态渲染不同的组件
  • 当组件切换的时候,都会触发组件的销毁和重建。首先,性能不好。其次,会丢失组件状态

keep-alive 组件

  • 当在这些组件之间切换的时候,有时会想保持这些组件的状态,以避免反复重渲染导致的性能问题。keep-alive 是一个内置容器组件, 使用 >keep-alive 以后,内部包含的组件将增加 激活失活/冻结 的状态

使用了 keep-alive 的组件会触发 activateddeactivated 两个生命周期函数

activated

keep-alive 组件激活时调用

deactivated

keep-alive 组件停用时调用

单文件组件

单文件组件把一个组件所包含的 结构样式行为、分别通过 templatestylescript 进行分离,然后统一组织在一个文件中。

相关文章

  • Vue实践与总结——组件与数据

    Vue实现组件化流程 Vue提供了一套构建组件的API,用于声明和实现 根组件,可复用组件 Vue库提供了名为Vu...

  • Vue组件间数据传递

    前言 总结vue组件间的数据传递 路由传参 父组件传递数据给子组件---props 子组件传递数据给父组件---$...

  • Vue组件学习笔记(持续更新中...)

    Vue 组件学习笔记 局部组件的使用 简易 demo 组件通信 总结: 子组件通过 props 接受父组件的数据 ...

  • vue

    vue组件与实例的关系 0. 谈谈 vue 和 react ? 1.mvvm 框架是什么答:vue是实现了双向数据...

  • vue笔记-14(组件-私有组件和组件的数据与方法)

    私有组件和组件的数据与方法 定义实例内部私有组件只能被某个vm实例使用的组件通过vue对象的components指...

  • 2022-03-10

    一 vue vue的优点? 渐进式 组件化开发 虚拟dom 响应式数据 单页面路由 数据与试图分开用户体检好,内容...

  • Vue 父子组件通信

    子组件与父组件通信 1、通过$emit实现通信 vue2.0只允许单向数据传递,我们通过出发事件来改变组件的数据,...

  • 深度解析vue组件之间通信【8种方式】实例

    这篇文章主要介绍了vue组件之间通信方式,结合实例形式总结分析了vue.js的8种组件通信方式与相关操作注意事项,...

  • vue 中几种传值方法

    前言 vue项目中,组件跟组件之间数据的传递是很普遍的行为,在这里总结几种常见的vue组件跟组件之间传值方式,其中...

  • 闲来一个vuex总结

    vuex是什么? 它是组件与组件之间状态的集合.因为vue是一种单向数据流的形式,父组件使用prop传递数据给子组...

网友评论

      本文标题:Vue实践与总结——组件与数据

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