Vue组件化、通过自定义指令子组件向父组件传递、$nextTick

1.如何安装Vue脚手架?

第一步(仅第一次执行):全局安装@vue/cli
  npm install -g @vue/cli
第二步:切换到你要创建项目的目录,然后使用命令创建项目
  vue create xxxx
第三步:启动项目
  npm run serve

2.脚手架结构

3.ref属性

4.props

配置项props
   功能:让组件接收外部传过来的数据
(1)传递数据
     <Demo name="xxx"/>
 (2)接收数据
     第一种方式(可接受):
       props:['name']

     第二种方式(限制类型):
       props:{
           name:Number
       }

     第三种方式(限制类型、限制必要性、指定默认值):
       props:{
           name:{
               type:String //类型
               required:true //必要性
               default:'老王' //默认值
           }
       }
备注:props是可读的,Vue底层会监测你对props的修改,如果进行了修改,就会发出警告,若业务需求确实需要修改,那么请复制props的内容到data中一份,然后去修改data中的数据

5.mixin(混入)

6.plugins插件

7.scoped样式

8.子组件如何向父组件传递数据?

1.通过父组件给子组件传递函数类型的props实现:子给父传递数据
    1.1父组件中绑定一个函数
    1.2子组件通过props来接收这个函数,再把子组件中的数据作为函数的参数,在合适的时候调用,就达到了将子组件的数据传到父组件的功能




2.通过父组件给子组件绑定一个自定义事件实现子给父传递数据(第一种写法,使用@或v-on)
     2.1给父组件中的子组件标签绑定一个自定义指令,如 @atguigu="getStudentName"
     2.2给父组件定义方法 getStudentName
     2.3给子组件中的(点击)事件定制atguigu,如 this.$emit('atguigu',this.name)



this.$refs.student(获取student组件的实例对象)
3.通过父组件给子组件绑定了一个自定义事件实现:子给父传递数据(第二种写法,使用ref)
     3.1给父组件中的子组件标签添加ref属性,如<Student ref="student"/>
     3.2给父组件定义方法getStudentName
     3.3给父组件添加mounted属性,如mounted(){//注意此处的student指的是ref的值,而不是Student组件
                                      this.$refs.student.$on('atguigu',this.getStudentName)
                                 }

这种方式灵活性较高,例如mounted(){    //使用$once,只触发一次,我们也可以在标签里书写@click.once
                             setInteval(()=>{
                                  this.$refs.student.$once('atguigu',this.getStudentName)
                             },3000)
                      }

                      
                      

9.解绑事件

当组件销毁后,它会拆卸身上所携带的监视属性,子组件,和监听事件,但是原生DOM不受影响

 

使用子组件向父组件传递数据的第三种方式时,如果直接把回调函数写在this.$refs.student.$on('atguigu',function(name,...params){

                              console.log(this)

})里,此时的this指向的是组件实例对象,即谁触发的事件,this指向的就是谁

如果像下面这种情况,在APP.vue中配置了getStudentName方法,this就指向的是APP.vue中的getStudentName

如果写成箭头函数,也可以解决这个问题,因为箭头函数没有自己的this

组件中如何想要用原生的事件,需要加上修饰符native

10.nextTick

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值