Vue学习记录(codewhy)注册组件步骤、语法糖、子组件和父组件、组件和模板分离、数据存放问题、父子组件的通信、父子组件的访问方式

什么是组件化

将一个页面拆分成一个一个小的功能块 每一个功能块完成属于自己这部分独立的功能 name之后整个页面的管理和维护就变得非常容易了

  • 提供了一种抽象 可以让我们开发出一个个独立可复用的小组件来构造我们的应用
  • 所有的应用都会被抽象成为一颗组件树
  • 尽可能将页面拆分成一个个小的可复用的组件
  • 这样我们的代码更加方便组织和管理 并且拓展性也更强
    在这里插入图片描述

注册组件的基本步骤

  • 创建组件构造器
  • 注册组件
  • 使用组件
    在这里插入图片描述
    在这里插入图片描述
  • 注意组件必须挂载在某个Vue实例下 否则不会生效
  • 这里注册组件是全局组件 意味着可以在多个Vue实例下面使用
    在这里插入图片描述
    如何注册的组件才是局部组件?(开发用的最多 而且一般只有一个Vue实例)——在Vue实例里面注册
    在这里插入图片描述

父组件和子组件

	<div id='app'>
        <cpn2></cpn2>
    </div>
    <script type=text/javascript>
    //创建第一个组件构造器(子组件)
    const cpnC1 = Vue.extend({
        template:`
        <div>
        <h2>我是标题1</h2>
        <p>我是内容1</p>
        </div>
        `
    })
    //创建第二个组件构造器(父组件)
    const cpnC2 = Vue.extend({
        template:`
        <div>
        <h2>我是标题2</h2>
        <p>我是内容2</p>
        <cpn1></cpn1>
        </div>
        `,
        components:{
            cpn1:cpnC1
        }
    })
    Vue.config.productionTip = false;  
    //可以把Vue也当做一个组件 就是root组件
    const app = new Vue({
    el: '#app',  
    data: {
    message: 'hello'
    },
    components:{
            cpn2:cpnC2
        }
    })
    </script>

注册组件语法糖

全局组件注册

在这里插入图片描述
语法糖:
在这里插入图片描述

局部组件注册

在这里插入图片描述
语法糖:
在这里插入图片描述

组件和模板分离写法

1.使用script标签 类型必须是text/x-template

在这里插入图片描述

2.使用template标签

在这里插入图片描述

组件中的数据存放问题

在这里插入图片描述

  • 组件是一个单独功能模块的封装 这个模块有自己的html模板 也应该有属性自己的数据data
  • 组件是无法访问Vue实例里的数据data的
  • 即使可以访问 如果所有的数据都放在Vue实例中 就会变得非常臃肿 不建议
    在这里插入图片描述
  • 组件对象也有一个data属性 只是这个data属性必须是个函数
  • 而且这个函数要返回一个对象 对象内部保存的是数据

在这里插入图片描述
obj不是同一个对象
在这里插入图片描述
obj都是同一个对象

子组件和父组件的通信

  • 父组件通过props向子组件传递数据
  • 子组件通过自定义事件向父组件发送消息
    在这里插入图片描述
    父组件通过props向子组件传递数据
    用v-bind 把movies当做一个变量来寻找
    在这里插入图片描述
    在这里插入图片描述
    1、2是对象写法(开发中常用)
    除了type、default(默认值 没有传值的时候显示的) 还可以用required 如果required=true 意味着设置必须传值 不然会报错

对于default的限制(但是我的编译器里没有报错)
在这里插入图片描述
还可以添加自定义的验证函数
在这里插入图片描述
props驼峰标识问题
在这里插入图片描述
在绑定的时候必须采用这种写法 不然不能识别
子组件通过自定义事件向父组件传递数据
常见场景:子组件里产生了一些事件希望父组件知道
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

父子组件的访问方式

父组件访问子组件—$children

$children

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
children是数组形式
注意下标值来获取元素的方法变动较大 开发中不常用

$refs(常用)

在这里插入图片描述
this.$refs.aaa.name——getname
$refs默认是一个空的对象 必须是给一个名字
在这里插入图片描述

子组件访问父组件

parent

在这里插入图片描述

root

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值