Vue基础(5)

ref属性

在 Vue2 中,ref是一个特殊的属性,用于在模板中获取对某个 DOM 元素或子组件的引用。通过 ref,我们可以在 JavaScript 代码中直接访问该 DOM 元素或组件实例。

示例:

html 复制代码
<template>
  <div>
    <input ref="inputField" placeholder="Type something here" />
    <button @click="focusInput">Focus Input</button>
    
    <child-component ref="childComponent"></child-component>
    <button @click="callChildMethod">Call Child Method</button>
  </div>
</template>

<script>
import ChildComponent from './ChildComponent.vue';

export default {
  components: {
    ChildComponent
  },
  methods: {
    focusInput() {
      this.$refs.inputField.focus();
    },
    callChildMethod() {
      this.$refs.childComponent.someMethod();
    }
  }
};
</script>

作用:

  • 操作 DOM 元素 :通过 ref 可以直接操作 DOM 元素,比如设置焦点、获取元素的值等。
  • 调用子组件方法 :通过 ref 可以访问子组件的实例,进而调用其方法或访问其数据。

props配置

在 Vue 2 中,props 是父组件向子组件传递数据的一种机制。通过props 父组件可以将其数据传递给子组件,而子组件则可以使用这些数据来渲染其内容或执行某些操作。

示例:

父组件中,

html 复制代码
<!-- 父组件 -->  
<template>  
  <div>  
    <child-component message="Hello from Parent"></child-component>  
  </div>  
</template>  
  
<script>  
import ChildComponent from './ChildComponent.vue';  
  
export default {  
  components: {  
    ChildComponent  
  }  
};  
</script>

子组件中,

html 复制代码
<!-- 子组件 (ChildComponent.vue) -->  
<template>  
  <div>{{ message }}</div>  
</template>  
  
<script>  
export default {  
  props: ['message']  
};  
</script>

注意:在 Vue 中,props是单向绑定的:父组件传递数据给子组件,子组件不应该直接修改props。如果子组件需要基于props的值来改变某些数据,应该使用计算属性或本地数据属性。

mixin(混入)

混入允许你将可复用的功能代码提取到一个对象中,然后在多个组件中使用。这可以帮助你避免重复代码并保持组件的整洁。

示例

首先先创建定义混入的js文件

javascript 复制代码
// myMixin.js
export const myMixin = {
  data() {
    return {
      mixinData: 'Hello from mixin!'
    };
  },
  created() {
    console.log('Mixin created!');
  },
  methods: {
    greet() {
      console.log(this.mixinData);
    }
  }
};

使用

javascript 复制代码
<template>
  <div>
    <h1>{{ mixinData }}</h1>
    <button @click="greet">Greet</button>
  </div>
</template>

<script>
import { myMixin } from './myMixin';

export default {
  mixins: [myMixin],
  data() {
    return {
      componentData: 'Hello from component!'
    };
  },
  created() {
    console.log('Component created!');
  }
};
</script>

注意:

  • 命名冲突:如果混合和组件中有同名的属性,组件中的属性会覆盖混合中的属性。
  • 生命周期钩子 :混合中的生命周期钩子会在组件中被调用,但它们的执行顺序是:父级钩子(例如组件自身的 created)在混合钩子之前。
  • 多重混合:你可以在一个组件中使用多个混合。
相关推荐
陪我一起学编程几秒前
vue3笔记
前端·webpack·vue3·vite·脚手架·vue3笔记·组件式
Wx-bishekaifayuan29 分钟前
springboot房屋租赁系统11574-计算机课程设计、毕业设计
java·vue.js·spring boot·后端·sql·spring·课程设计
小白的码BUG之路34 分钟前
Docker -- 构建nginx镜像,启动vue项目
vue.js·nginx·docker
object not found1 小时前
WooCommerce 接入 KPay 后订单完成页不显示订单信息:returnUrl 动态参数问题解决
前端·wordpress·独立站支付
yume_sibai1 小时前
04-Nginx部署实战完全指南(前端部署 + 后端代理 + 监控告警 + 故障排查)
运维·前端·nginx
data analyse 4561 小时前
数据合规的同意记录怎么留存?
前端·人工智能·数据分析
linux_cfan1 小时前
videojs v10 源代码系列解读:35 · HLS 解析器:multivariant 与 media playlist
前端·javascript·音视频
IT_陈寒1 小时前
Redis键过期失效?这个坑我踩得明明白白
前端·人工智能·后端
web打印社区1 小时前
汽修 / 4S 店:维修工单、结算单网页怎么静默出纸
开发语言·前端·javascript·chrome·ecmascript
3Q工具箱 - BraggTroy1 小时前
Vue SPA 站百度收录“全军覆没“?一次预渲染抢救的完整实战(2026 踩坑版)
vue.js·百度·dubbo