vue学习-03vue父子组件与ref属性

这篇具有很好参考价值的文章主要介绍了vue学习-03vue父子组件与ref属性。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本篇开始,我们将复习一下上篇的组件引入:
App.vue

<template>
    <div>
        <img src="./assets/logo.png" alt="logo">
        <!-- 编写组件标签 -->
        <School></School>
        <Student></Student>
    </div>
</template>

<script>
    //引入组件。语法:import 组件名 from '组件的路径'
    import School from './components/School.vue'
    import Student from './components/Student.vue'

    //暴露App(父)组件
    export default {
        name: 'App',
        //注册子组件
        components:{
            School,
            Student
        }
    }
</script>

components/
School.vue

<template>
    <div class="demo">
        <h2>学校名称:{{schoolName}}</h2>
        <h2>学校地址:{{address}}</h2>
        <button @click="showName">点击我提示学校名</button>
    </div>
</template>

<script>
    export default {//将组件暴露出去(一般我们都是用默认暴露)
        name:'School',//在开发者工具呈现出的组件名
        data() {
            return {
                schoolName:'罗小黑',
                address:'湖南衡阳'
            }
        },
        methods: {
            showName() {
                alert(this.schoolName);
            }
        }
    };
    //export default school;//定义好的组件要想被别人调用,一定要将其暴露出来!!!!
</script>

<style>
    .demo{
        background-color: orange;
    }
</style>

Student.vue

//组件的结构
<template>
    <div class="demo2">
        <h2>学生名字:{{studentName}}</h2>
        <h2>学生年龄:{{age}}</h2>
        <button @click="showName">点击我提示学生名字</button>
    </div>
</template>

<script>
    export default {//将组件暴露出去(一般我们都是用默认暴露)
        name:'Student',//在开发者工具呈现出的组件名
        data() {
            return {
                studentName:'张三',
                age:18
            }
        },
        methods: {
            showName() {
                alert(this.studentName);
            }
        }
    };
    //export default school;//定义好的组件要想被别人调用,一定要将其暴露出来!!!!
</script>

<style>
    .demo2{
        background-color: skyblue;
    }
</style>

main.js

/**
 * 该文件为整个项目的入口文件
 */
//引入vue
import Vue from 'vue'
//引入App组件,它是所有组件的父组件
import App from './App.vue'

//关闭vue的生产提示
Vue.config.productionTip = false

//创建vue实例对象vm


/**
 * 关于不同版本的Vue:
 *      1.vue.js和vue.runtime.xxx.js的区别:
 *          (1).vue.js是完整版的Vue,包含:核心功能+模板解析器。
 *          (2).vue.runtime.xxx.js是运行版的Vue,只包含:核心功能;没有模板解析器。
 *      2.因为vue.runtime.xxx.js没任何模板解析器,所以不能使用template配置项,需要使用render函数接收到的createElement函数去指定具体内容。
 */
new Vue({
    el:'#app',
    //下面这段代码一会解释,完成这个功能:将App组件放入到容器中
    //render: h => h(App),箭头函数
    /**
     * render是一个函数,必须要有返回值
     */
    //创建并渲染元素
    render(createElement) {
        return createElement(App);
    },
});

// eslint-disable-next-line no-unused-vars
let person={name:'张三',age:18};

ref属性

main.js

//引入Vue
import Vue from 'vue';

//引入App
import App from './App.vue';

//关闭Vue的生产提示信息
Vue.config.productionTip=false;

//创建vm实例对象
const vm = new Vue({
    el:'#app',
    render: h => h(App)//渲染容器
});

App.vue,将最上边的App.vue调整为以下内容

<template>
    <div>
        <h2 v-text="msg" ref="title"></h2>
        <!-- 编写组件标签 -->
        <School ref="sch"></School>

        <!-- 编写组件标签 -->
        <Student></Student>
        <button ref="btn" @click="showDOM">点击我输出上面的DOM元素</button>
    </div>
</template>

<script>
    //引入School组件
    import School from './components/School.vue'

    //引入Student组件
    import Student from './components/Student.vue'
    export default {
        name: 'App',
        //注册组件
        components:{
            School,
            Student
        },
        data() {
            return {
                msg:'欢迎学习Vue!'
            }
        },
        methods:{
            showDOM(){
                console.log(this);
                console.log(this.$refs.title);//真实的DOM元素
                console.log(this.$refs.sch);//真实的DOM元素
                console.log(this.$refs.btn);//School组件的实例对象(vc)
            }
        }
    }
</script>

<style>

</style>

school.vue

<template>
  <div class="demo">
      <h2>学校名字:{{name}}</h2>
      <h2>学校地址:{{address}}</h2>
  </div>
</template>

<script>
    //以默认的形式暴露组件
    export default {
        name:'School',
        data() {
            return {
                name:'罗小黑',
                address:'湖南衡阳'
            }
        }
    }
</script>

<style>
    .demo{
        background-color: skyblue;
    }
</style>

student.vue文章来源地址https://www.toymoban.com/news/detail-732118.html

<template>
    <div class="demo2">
        <h2>学生姓名:{{name}}</h2>
        <h2>年龄:{{age}}</h2>
    </div>
</template>

<script>
    //暴露组件(默认暴露形式)
    export default {
        name:'Student',
        data() {
            return {
                name:'张三',
                age:18
            }
        }
    }
</script>
<style>
    .demo2{
        background-color: orange;
    }
</style>

到了这里,关于vue学习-03vue父子组件与ref属性的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • VUE,子组件给父组件传递参数,props 自定义属性,ref

    AA组件 BB CC

    2024年02月14日
    浏览(29)
  • vue3中ref获取不到组件实例&&数组中对象的属性值去重

    1、vue3中ref获取不到组件实例 原因 :使用语法糖的组件是默认关闭的,也即通过模板 ref 或者 $parent 链获取到的组件的公开实例,不会暴露任何在 script setup 中声明的绑定。 解决方法 : 为了在 语法糖组件中明确要暴露出去的属性,使用 defineExpose 编译器宏将需要暴露出去的变

    2024年02月11日
    浏览(31)
  • vue中使用this.$refs获取不到子组件的方法,属性方法都为undefined的解决方法

    因为注册了多个ref,获取是不能单单知识refs.xxx,需要使用数组和索引来获取具体一个组件refs[index].xxx 额……就像这样😐 好这么一写,导致前两个组件都无法正常使用…… 页面也会有这个报错: 组件名 - did you register the component correctly? For recursive components, make sure to provide

    2024年02月13日
    浏览(39)
  • vue - 动态绑定ref(使用变量)以及获取方式,解决v-for循环嵌套自定义子组件时无法this.$refs.xx找到动态组件的情况(详细示例教程)适合 vue.js nuxt.js uniapp

    正常情况,我们需要在vue中获得某个dom或者组件,我们会通过绑定 ref 然后通过绑定后的名字来获取这个dom 。 但是,如果我们在v-for中绑定ref的话,那么这个ref就会存在多个,比如我们点击事件让对应的显示/隐藏的话,我们很难找到这个对应的元素。 那么,这时我们需要动

    2024年02月13日
    浏览(39)
  • Vue-Element-Admin项目学习笔记(9)表单组件封装,父子组件双向通信

    前情回顾: vue-element-admin项目学习笔记(1)安装、配置、启动项目 vue-element-admin项目学习笔记(2)main.js 文件分析 vue-element-admin项目学习笔记(3)路由分析一:静态路由 vue-element-admin项目学习笔记(4)路由分析二:动态路由及permission.js vue-element-admin项目学习笔记(5)路由分析

    2024年02月11日
    浏览(39)
  • Vue3的手脚架使用和组件父子间通信-插槽(Options API)学习笔记

    全局安装最新vue3 升级Vue CLI: 如果是比较旧的版本,可以通过下面命令来升级 通过脚手架创建项目 父组件 子组件 UserComponent.vue 父组件 **子组件1 JiaComponent.vue ** ** 子组件2 JianComponent.vue ** 父组件 子组件 TitleComponents.vue 父组件 **子组件 NavComponent.vue ** 父组件 子组件 NavCompone

    2024年02月05日
    浏览(32)
  • Vue(ref和$refs属性介绍与使用)

    在Vue中一般很少会用到直接操作DOM,但不可避免有时候需要用到,这时我们可以通过ref和$refs这两个来实现,本文我们就来详细的介绍下这个内容 除了自定义属性外,Vue实例还暴露一些有用的实例属性和方法,他们都有前缀$,以便和用户定义的属性和方法分开 常用的属性有

    2023年04月26日
    浏览(26)
  • Vue中父子组件通信

    聚沙成塔·每天进步一点点 Vue学习之旅的奇妙世界 欢迎大家来到 Vue 技能树参考资料专栏!创建这个专栏的初衷是为了帮助大家更好地应对 Vue.js 技能树的学习。每篇文章都致力于提供清晰、深入的参考资料,让你能够更轻松、更自信地理解和掌握 Vue.js 的核心概念和技术。订

    2024年01月21日
    浏览(51)
  • VUE--组件通信(非父子)

    一、非父子通信  ---  event bus 事件总线         作用:非父子组件之间进行 简易的消息传递         步骤:                    1、创建一个都能访问到的事件总线(空vue实例)--- utils/EventBus.js                   2、 接收方(A组件),监听Bus实例的事件        

    2024年01月19日
    浏览(47)
  • Vue3+ts(day03:ref和reactive)

    作用: 定义响应式变量。 语法: let xxx = ref(初始值)。 返回值: 一个RefImpl的实例对象,简称ref对象或ref,ref对象的value 属性是响应式的 。 注意点: JS中操作数据需要:xxx.value,但模板中不需要.value,直接使用即可。 对于let name = ref(\\\'张三\\\')来说,name不是响应式的,name.val

    2024年04月27日
    浏览(20)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包