zoukankan      html  css  js  c++  java
  • Vue-day05

    1.组件通信

    创建流程

    1、创建目录vue init webpack mydemo

    2、完成清空工作

    3、创建parent文件夹》parent.vue/child.vue

    4、把child.Vue引入到parent.vue中

    5、把parent文件夹的parent.vue引入到App.vue中

    a.父传子

    1.父传子:传递基本数据类型,通过绑定自定义属性,子组件通过props接收

    // props:接收父组件传递过来的属性
    props: ["gift"],
    mounted(){
    //注意父组件传递过来的数据可以直接获取
          console.log(this.gift)
      }

    a.父变子变 直接传递基本数据类型

    <div>
          想要给儿子的礼物-----{{gift}}
          <input type="text" v-model="gift">
          <v-child1 :gift='gift'></v-child1>
      </div>

    b.子变父变 直接报错 解决方法:直接把父组件传递过来的值存储为自己的变量值 注:只能解决报错问题

    //子变父变 直接报错
        <div>这是父组件传递出来的数据--{{gift}}</div>
        <input type="text" v-model="gift">
    //解决方法
    <script>
    export default {
        // props:接收父组件传递过来的属性
      props: ["gift"],
      data(){
          return{
              mygift:''//存储父组件传递过来的数据可以直接获取
          }
      },
      components: {

      },
      mounted(){
        //   注意父组件传递过来的数据可以直接获取
          console.log(this.gift)
          this.mygift=this.gift
      }
    };
    </script>


    c.父变子变,子变父变 传递一个对象 由于传递的是对象,而对象传递的是地址,所以父子同时操作的是同一个地址

    <v-child1 :gift='gift' :toSon='toSon'></v-child1>
    <script>
    import vChild1 from './child1'
    export default {
      data() {
        return {
          gift:'大奔',
          toSon:{
            sonGift:'QQ'
          }
        }
      },
      components: {
        vChild1,
      },
    };
    </script>
    //孩子组件
    <script>
    export default {
        // props:接收父组件传递过来的属性
      props: ["gift",'toSon'],
      data(){
          return{
              mygift:''//存储父组件传递过来的数据可以直接获取
          }
      },
      components: {
      },
      mounted(){
        //   注意父组件传递过来的数据可以直接获取
          console.log(this.gift)
          console.log(this.toSon)
          this.mygift=this.gift
      }
    };
    </script>

    b.子传父

     1.子传父  绑定方法$emit(方法名,参数)

     总结:

    1.父传子: 给父组件中的子组件绑定属性,子组件通过props接收
    2.子传父:给子组件绑定方法,通过$emit绑定方法名。在父组件中绑定约定的方法名即可.

    c.非父子

    1.首先在vue原型上定义一个属性,用来关联所有的vue的组件
    Vue.prototype.Event = new Vue()
    2.one->two 传值
    在one组件中绑定事件
     <button @click="sendTwo">发送给two的数据</button>
     methods:{
        sendTwo(){
            // 发送数据$emit
            this.Event.$emit('sendTwo',this.msg)
        }
    }
    在two组件中无条件接受 (mounted)
    mounted(){
        // 接收数据$on
        this.Event.$on('sendTwo',(e)=>{
            console.log(e)
        })
    }

    2.is

    1.解决标签的固定搭配
    2.动态组件
    1. ul>li  此时给li绑定 is属性  (<li is='vOne'></li>)   那么此时就是把li替换为组件vOne的内容
    2.动态组件 首先在data中定义一个变量(name) 给name:'vOne'
     <!-- 用来展示组件内容 -->
     <div :is='name'></div>
     
     效果是点击one展示one的内容,点击two展示two内容 所以此时需要两个按钮
     <!-- 动态组件 -->
     <button @click="name='vOne'">one</button>
     <button @click="name='vTwo'">two</button>

    3.slot (插槽)

    1.无名插槽
    <v-one>组件内容</v-one>
    在子组件v-one组件中写<slot></slot> 在组件内容的前后都可以 
    2.具名插槽
    <v-two>
        <div slot='aa'>aa</div>
        <div slot='bb'>bb</div>
    </v-two>
    在子组件中v-two中
    <slot name='aa'></slot>

    4.ref

    1.主要是用来获取DOM元素
    给元素绑定ref属性(ref='box') 通过this.$refs.box 来获取当前元素
    2.获取组件
    给元素绑定ref属性(ref='one') 通过this.$refs.box 来获取当前组件,那么此时可以使用组件中的属性和方法

    5.jquery

    1.安装 npm i jquery --save
    2.在需要的页面导入jquery
    import $ from 'jquery'
    mounted(){
        获取元素进行操作
        $('button').click(()=>{
              $('.box').fadeOut(3000)
          })
    }
    在<template>
        <div>
         <div class="box"></div>
        <button>点击淡出</button>
        </div>
    </template>
  • 相关阅读:
    什么是枚举?有什么作用?有什么好处?
    java获取某个范围内的一个随机数
    java中普通代码块,构造代码块,静态代码块的区别及代码示例
    Oracle数据库迁移
    linux下修改文件权限
    <%@ include file="">和<jsp:include file="">区别
    JAVA常见异常解析
    jdk环境变量配置
    jstl中fmt标签详解
    jsp脚本元素
  • 原文地址:https://www.cnblogs.com/yu19991126/p/14253656.html
Copyright © 2011-2022 走看看