vue 父子通信、ref、is、插槽与动画

cnpm安装

1、检查电脑中是否有cnpm
cnpm -v
2、如果没有cnpm的话就安装
npm install -g cnpm --registry=https://registry.npm.taobao.org
3、检查是否有cnpm了
cnpm -v
4、配置环境变量
找到nodejs\node_global这个文件添加到环境变量path当中

父子组件通信(父传子)

父组件通过自定义属性传值,子组件通过props接收

// 父组件
<v-child :info="name"></v-child>
// 子组件
export default {
props:["info"]
}
1、父传子是单向数据流
2、默认:父变,子变;子变,父不变,并且还会报错
3、通过生命周期把父级给我值设置为我自己的msg。父变,子不变;子变,父不变,不会报错。
4、如果想要实现父变子变;子变父变,还不报错,那么就传递一个json类型

props验证

  props:{
  info:{
    // 必传
    required:true,
    // 传递数据类型
    type:String
  },
  age:{
    //设置默认值
    default(){
      return 50
    }
  }
}

子父组件通信(子传父)

子组件想要修改父组件的数据 子传父,通过自定义事件实现;父组件可以通过e获取到子组件传的值

// 子组件
export default {
methods: {
  toggle(){
    this.$emit('cancle','孙尚香')
  }
}
}
// 父组件
<v-child @cancle="toggle"></v-child>
methods:{
toggle(e){
console.log(e)
}
}

非父子组件通信(兄弟组件)

单一事件管理

// main.js
Vue.prototype.Event = new Vue()
// 发送者
methods: {
send(){
  this.Event.$emit("sendA",this.name)
}
}
// 接受者
mounted: {
this.Event.$on("sendA",(e)=>{
console.log(e)
})
}

vuex 存储:localStrage、sessionStrage

ref

ref被用来给元素或者子组件注册引用信息。引用信息将会注册在父组件的$refs上。如果是普通的DOM元素上使用,引用指向的就是DOM元素;如果用在子组件上,引用就指向子组件的实例。

<div class="smBox" ref="pink"></div>
<button @click="getPink">点击获取粉盒子</button>
<hr>
<v-child ref="getChild"></v-child>
<button @click="getChild">点击获取子组件</button>

methods: {
getPink(){
  this.$refs.pink.innerHTML = '哈哈哈,我就是那个粉盒子'
},
getChild(){
  this.$refs.getChild.toggleName()
}
}

scoped

样式局部作用

<style scoped>

</style>

is

  <!-- 1、is解决固定搭配 -->
<ul>
  <li is="v-a"></li>
</ul>
<hr>
<!-- 2、动态组件 -->
<div :is="hahaha"></div>
<button @click="hahaha='vA'">vA按钮</button>
<button @click="hahaha='vB'">vB按钮</button>
 
data(){
return {
hahaha:vA
}
}

animate.css

// 1、安装animate.css
npm i animate.css --save
// 2、在main.js中引入
import "animate.css"
// 3、使用
<transition enter-active-class="animate__animated animate__bounceInDown">
<div :is="hahaha"></div>
</transition>

slot

1、匿名插槽 ①如果没有内容,就不展示 ②如果有内容,就直接展示在slot所在的位置 ③如果有很多内容,全部展示在slot所在的位置

// 父组件
<v-child>
  <p>庄生晓梦迷蝴蝶</p>
  <p>望帝春心托杜鹃</p>
</v-child>
// 子组件
<div>
this is child
<slot></slot>
</div>

2、具名插槽

// 父组件
<v-child>
  <p slot="one">锦瑟无端五十弦</p>
  <p slot="two">一弦一柱思华年</p>
</v-child>
// 子组件
<slot name="two"></slot>
<slot name="one"></slot>

jQuery

// 1、安装
npm i jquery --save
// 2、在main.js中引入
import $ from "jquery"
Vue.prototype.$ = $
// 3、使用
this.$('.btn1').click(()=>{
this.$('.smbox').slideDown(2000)
})
this.$('.btn2').click(()=>{
this.$('.smbox').slideUp(2000)
})

面试题

posted @ 2020-11-25 20:39  石海莹  阅读(170)  评论(0编辑  收藏  举报