美文网首页
组件通讯

组件通讯

作者: Smile_1024 | 来源:发表于2018-03-29 22:16 被阅读0次

1.什么是组件

组件 (Component) 是 Vue.js 最强大的功能之一。组件可以扩展 HTML 元素,封装可重用的代码。在较高层面上,组件是自定义元素,Vue.js 的编译器为它添加特殊功能。在有些情况下,组件也可以表现为用 is 特性进行了扩展的原生 HTML 元素。

所有的 Vue 组件同时也都是 Vue 的实例,所以可接受相同的选项对象 (除了一些根级特有的选项) 并提供相同的生命周期钩子。

创建组件的两种方式:1 全局组件 2 局部组件

Vue实例中的配置项(如:methods、filters、watch、computed、directives、生命周期钩子函数)都可以在组件中使用

在 Vue 中,父子组件的关系可以总结为 prop 向下传递,事件向上传递。父组件通过 prop给子组件下发数据,子组件通过事件给父组件发送消息。

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

---------------------------差值表达式{{ 属性名 }} //最终被属性相对应的值替换-----------------------

-------------------------watch:{data中数据: 函数}只能监视data中的数据---------------------------

2.父组件通信于子组件

步骤:1).父组件提供一个数据(data中的数据)-->

             2).子组件标签上添加一个属性(格式=>:自定义属性名称="data中的数据")-->

            3).子组件中通过props来接受父组件传来的数据(属性名称)-->

            4).可以使用props中的数据了(与data中数据的使用方式一致  html中{{ }},js中this.属性名)

HTML 特性是不区分大小写的。所以,当使用的不是字符串模板时,camelCase (驼峰式命名) 的 prop 需要转换为相对应的 kebab-case (短横线分隔式命名):

**prop验证(不要忘记)

3.子组件通信于父组件

先来了解一下emit触发事件

步骤:1).父组件提供一个事件(方法)-->

             2).子组件标签上添加一个方法(如图fn),将父组件提供的事件名称(getChildMsg)作为这个方法的属性值,通过这种方式传递给子组件-->

             3).子组件通过调用自身函数(如图click事件),将$emit()写在函数内,使用它来触发传递过来的事件。this.$emit('fn','要传递给fn的参数')-->

            4).可以使用props中的数据了(与data中数据的使用方式一致  html中{{ }},js中this.属性名)

4.非父子组件的通信

有时候,非父子关系的两个组件之间也需要通信。在简单的场景下,可以使用一个空的 Vue 实例作为事件总线:var bus = new Vue() (bus是空vue实例,事件总线)

步骤:1).要接收数据的组件在bus上注册事件($on())-->

             2).要传递数据的组件在bus上触发事件($emit())

组件A中$emit的第二个参数就是$on中的第二个参数函数的参数

5.VUE组件的v-model

Vuex状态管理

在Vue中,多组件的开发给我们带来了很多的方便,但同时当项目规模变大的时候,多个组件间的数据通信和状态管理就显得难以维护。而Vuex就此应运而生。将状态管理单独拎出来,应用统一的方式进行处理,在后期维护的过程中数据的修改和维护就变得简单而清晰了。

实例中是使用this.$store,HTML中使用$store

补充:

单向数据流

Prop 是单向绑定的:当父组件的属性变化时,将传导给子组件,但是反过来不会。这是为了防止子组件无意间修改了父组件的状态,来避免应用的数据流变得难以理解。

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


给组件绑定原生事件:有时候,你可能想在某个组件的根元素上监听一个原生事件。可以使用 v-on 的修饰符 .native。例如:

使用第三方插件的时候,遇到以下情况需要手动改动配置项

注意:|前后都不要有空格

使用编程式导航实现跳转(  this.$router.push()  )

通过点击li将geNewsInfo方法中的参数id,通过编程式导航传递给url

导入并使用公共组件的步骤:

注意路径 作为export default的一个导出对象 根据渲染位置,写在template里面

相关文章

  • vue组件通信

    1.组建通讯---父子组件通讯 父子通信通过props属性进行传值 父组件 子组件 1.组建通讯---子父组件通讯...

  • Vue——组件通讯

    组件通讯 一、组件:组件是可复用的 Vue 实例 二、创建组件: 例如: 三、组件通讯 父传子:1.创建两个组件A...

  • 7天深入Vue - vue组件之间的通讯与插槽(一)

    常用组件之间的通讯 1.props vue 基础父子组件通讯 数组形式 子组件定义props:['title', ...

  • 组件通讯

    1.什么是组件 组件 (Component) 是 Vue.js 最强大的功能之一。组件可以扩展 HTML 元素,封...

  • 组件通讯

    http://taobaofed.org/blog/2016/11/17/react-components-com...

  • 组件通讯

    2017年46周学习总结 angular组件间通讯 组件输入输出 当子组件需要向父组件传递信息时需要用到输出属性,...

  • vue组件如何通信?有几种方式?

    在vue中组件通讯可以分为父子组件通讯和非父子组件通信。父组件通过props的方式向子组件传递数据,而子组件可以通...

  • vue2-父子组件通信

    父组件到子组件通讯 父组件到子组件的通讯主要为:子组件接受使用父组件的数据,这里的数据包括属性和方法(String...

  • vue页面和component组件之间双向通讯(续1)

    VUE中父组件、子组件之间的双向通讯可以参见笔者的《vue页面和component组件之间双向通讯[https:/...

  • 同级之间传值

    一.父子组件 1.父组件到子组件通讯父组件到子组件的通讯主要为:子组件接受使用父组件的数据,这里的数据包括属性和方...

网友评论

      本文标题:组件通讯

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