美文网首页
vue 的组件与父子组件传值知识点

vue 的组件与父子组件传值知识点

作者: 阿兰十一 | 来源:发表于2020-05-27 22:33 被阅读0次

组件化
组件化就是一种拆解复杂问题的思路,一般是将复杂的页面拆解成一个个小的可复用的组件,方便组织和管理,扩展性强。
组件的使用步骤:
1.创建组件构造器 Vue.extend()
2.注册组件 Vue.component()
3.使用组件 实例作用范围使用

image.png
    <div id="app1">
        <!-- 3.在实例作用范围使用 -->
        <cpn></cpn>
    </div>
    <script src="../js/vue.js"></script>
    <script>
        //1. 创建组件构造器
        const cpn = Vue.extend({
            template: `
          <div>
           <h2>我是标题</h2>
           <p>我是组件中的内容</p>
          </div>
           `
        })
        // 2.注册组件
        Vue.component('cpn', cpn)// 全局组件

        const app = new Vue({
            el: '#app1',
        })

    </script>

</body>

为什么组件中的data只能是函数

<body>

  <div id="app">
    <cpn></cpn>
    <cpn></cpn>
    <cpn></cpn>
  </div>

  <template id="cpn">
    <div>
      <h2>{{counter}}</h2>
      <button @click="btnClick">按钮</button>
    </div>
  </template>
  <script src="../js/vue.js"></script>
  <script>
    const obj = {
      counter: 0
    }

    const app = new Vue({
      el: '#app',
      components: {
        'cpn': {
          template: '#cpn',
          data() {// 当data()为函数时 每个<cpn></cpn> 中的count 是独立的,
若data{}.每个 <cpn></cpn>中的count都指向data中的count,
只要改变其中一个所有的都会改变
            return {
              counter: 0
            }
          },
          methods: {
            btnClick() {
              this.counter++
            }
          }
        }
      }
    })
  </script>
</body>

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

image.png
父组件通过props向子组件传递数据 image.png

注意点:props中的驼峰表示要使用'-'将大写转换成小写连接起来


image.png

子组件通过事件向父组件发送消息


image.png

一般props的值只能由父组件传过来的值进行改变。子组件不能修改,且一般input的v-model的value都是放在data(),错在value值放到props的中


image.png
image.png
解决方案
image.png

实现子组件输入框输入的值改变父子组件原来的值


image.png
image.png
image.png

父子组件的访问方式: $children

父组件访问子组件:使用children或refs
子组件访问父组件:使用$parent

我们先来看下children的访问 this.children是一个数组类型,它包含所有子组件对象。
我们这里通过一个遍历,取出所有子组件的message状态。

image.png

$refs的使用:

$refs和ref指令通常是一起使用的。

首先,我们通过ref给某一个子组件绑定一个特定的ID。
其次,通过this.$refs.ID就可以访问到该组件了。

非父子组件通信
刚才我们讨论的都是父子组件间的通信,那如果是非父子关系呢?
非父子组件关系包括多个层级的组件,也包括兄弟组件的关系。
在Vue2.x中,有一种方案是通过中央事件总线,也就是一个中介来完成。
但是这种方案和直接使用Vuex的状态管理方案还是逊色很多。
并且Vuex提供了更多好用的功能,所以这里我们暂且不讨论这种方案,后续我们专门学习Vuex的状态管理。

相关文章

  • (VUE3) 四、组件传值(父子组件传值 & 祖孙组件传值 &v

    1.父子组件传值 vue2中的父子组件传值:父组件: 子组件: vue3中的父子组件传值: 还是用props接收父...

  • Vue父子组件通信和双向绑定

    本篇文章主要介绍父子组件传值,组件的数据双向绑定。 1. 基础父子组件传值 父子组件传值,这是Vue组件传值最常见...

  • VUE组件(传值,生命周期)

    VUE生命周期 VUE子传父组件通信 VUE非父子组件传值

  • Vue组件之间的传值

    Vue父子组件之间的传值(props)兄弟组件 VUEX

  • 2019-03-13

    vue父子组件传值,(父组件向子组件传值用prop ,子组件向父组件传值:子组件调用父组件方法值以参数的方式传递)...

  • 2019-03-13

    vue父子组件传值,(父组件向子组件传值用prop ,子组件向父组件传值:子组件调用父组件方法值以参数的方式传递)...

  • VUE03

    Vue组件 组件的创建 组件的指令以及事件绑定 父子组件创建 父子组件通信 兄弟组件的传值 动态组件

  • vue父子组件传值

    在vue中父子组件的传值,是我们必须要get的知识点,今天再做一个详细的总结。 1)父组件向子组件传值 父组件向子...

  • 前端基础搬运工-VUE模块

    十、VUE模块 基础部分 1. Vue组件间传值 答: -[ ] 1.父子之间的传值 父组件向子组件传值通过p...

  • vue2.0的三种常用传值方式,并且如何实现?

    vue2.0 组件传值方式有三种:父组件向子组件传值,子组件向父组件传值,非父子组件传值 : 父传子: 首先现在父...

网友评论

      本文标题:vue 的组件与父子组件传值知识点

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