目录
ref是vue中提供的一种可以直接操作DOM的方式
具体使用方式如下
- <div>
-
- <h1 ref="自定义名称">h1>
- <button @click="edit">button>
- div>
-
- export default {
- methods:{
- edit(){
- //之后 我们就可以通过 组件实例.$refs.自定义名称 就可以得到对应名称的DOM元素
- }
- }
- };
-
配合v-for来使用
- <div>
-
- <h1 ref="自定义名称">h1>
- <ul>
- <li v-for="(item,idx) in list" ref="li">{{item}}li>
- ul>
- <button @click="edit">button>
- <button @click="li">button>
- div>
-
- export default {
- data(){
- return {
- list:[
- "张三",
- "李四",
- "王二麻子"
- ]
- }
- },
- methods:{
- edit(){
- //之后 我们就可以通过 组件实例.$refs.自定义名称 就可以得到对应名称的DOM元素
- },
- li(){
- //我们这里 如果使用this.$refs.li获取的话 得到的是一个元素集合 里面包含所有ref值为 li的元素(li)
- }
- }
- };
-
通过ref操作子组件
在子组件中 写入ref 属性 这样我们就可以通过ref属性 来获取到子组件的vue实例对象了,这样也就可以获取到子组件实例对象中的数据、computed等内容了
- <div>
-
- <h1 ref="自定义名称">h1>
- <ul>
- <li v-for="(item,idx) in list" ref="li">{{item}}li>
- ul>
- <v-child ref="child">v-child>
- <button @click="edit">button>
- <button @click="li">button>
- <button @click="editChild">
- 操作子组件
- button>
-
- div>
-
- import VChild from "子组件地址"
- export default {
- data(){
- return {
- list:[
- "张三",
- "李四",
- "王二麻子"
- ]
- }
- },
- components:{
- VChild
- },
- methods:{
- edit(){
- //之后 我们就可以通过 组件实例.$refs.自定义名称 就可以得到对应名称的DOM元素
- },
- li(){
- //我们这里 如果使用this.$refs.li获取的话 得到的是一个元素集合 里面包含所有ref值为 li的元素(li)
- },
- editChild(){
- //我们这里 如果使用this.$refs.child 获取到的是子组件的vue实例
- }
- }
- };
-
vue中给我们提供了一个内置组件 名为component 其作用是可以动态切换组件进行操作
用法:
- <template>
- <div>
- <h1>{{content}}h1>
- <button>childbutton>
- <button>child1button>
- <button>child2button>
-
- <component is="VChild">component>
- div>
- template>
-
- import VChild from "./VChild.vue"
- import VChild1 from "./VChild1.vue"
- import VChild2 from "./VChild2.vue"
- export default {
- data() {
- return {
- content:"我是父组件"
- };
- },
- components:{
- VChild,
- VChild1,
- VChild2,
- }
- };
-
vue中还提供了另一个内置组件——keep-alive
使用keep-alive的步骤如下
1.将要保持状态的元素或组件 写入keep-alive组件的内容
- <组件>组件>
这样就可以保持指定组件的状态了
添加了keep-alive组件之后 会自动给内部组件 添加两个生命周期函数 activated deactivated
activated :激活后生命周期
deactivated :销毁后生命周期