Vue3 项目开发常用知识点梳理

computed 和 watch的区别和使用场景

基本上能用computed的,watch也能用,但是有的情况,只能用computed,而有的情况需要用watch。

computed:计算属性,能立即返回一个你需要的计算属性,要返回值。一般用来获取实时更新的信息,下拉列表,可选项。

computed 一般用来获取实时更新的缓存内容,如cookies,session,vuex里面的内容,具体的:用户姓名,昵称,根据不同权限判断初始化加载数据大小

watch也能计算属性,能监听对象里属性的变化,立即监听加{immediate:true},深度监听加{deep: true},可以异步响应,没有返回值。一般用来监听某个属性变化后,进行事件处理。

比如用watch 做响应式表单校验,动态表单渲染,监听某个属性变化后异步调用api等

组件通讯常用的方法

父组件获取子组件的方法和属性:

当前父页面里,给子组件添加ref="子组件"  ,   const "子组件" = ref(null)

在父页面里通过“子组件.value.(子组件的属性或方法)”

父组件获取子组件传回的方法参数

子页面@click = "confirm" 

confirm(){

// 子页面填装数据/表单校验操作

    emit(‘childrenClick’,表单校验的结果) // emit方法抛回给父组件

}

父页面@childrenClick = "parentClick($envent)"

parentClick(子页面传回来的参数){

xxxxxxx
}

父组件传递参数到子组件

父页面:

<子组件

:'子组件接收属性1'='父组件属性1'

:'子组件接收属性2'='父组件属性2'

@子组件方法=“父组件的方法”

>

</子组件>

子页面通过props接收

props:{

  子组件接收属性1:{

     type:xxxx, required:true ,default:'xxxx'

  }

  子组件接收属性1:{

     type:xxxx, required:true ,default:'xxxx'

  }

}

爷孙组件通讯

爷页面

provide('爷的数据',爷的数据)

孙页面

const '从爷爷获取的数据' = inject('爷的数据')

兄弟之间通讯

平级组件直接通讯,一般有几种做法

1:eventBus 发布订阅模式 vue 高级前端总结(—)-CSDN博客

2:当前的组件属性向上抛,父组件通过ref获取当前的属性,再传递到兄弟组件。

3:通过vuex,cookies,session,缓存机制

组件的生命周期

<script>
import {
  onBeforeMount,
  onMounted,
  onBeforeUpdate,
  onUpdated,
  onBeforeUnmount,
  onUnmounted,
  ref
} from 'vue'
 
export default {
  setup () {
    // 其他的生命周期
    onBeforeMount (() => { // DoM还没挂载,虚拟DoM已经加载
	console.log("App ===> 相当于 vue2.x 中 beforeMount")
    })
    onMounted (() => { 
    //挂载阶段,Vue已经编译过的DoM,一般在这个步骤初始化发送网络请求,开启定时器,
	    console.log("App ===> 相当于 vue2.x 中 mounted")
    })
    
    // 注意,onBeforeUpdate 和 onUpdated 里面不要修改值
    onBeforeUpdate (() => { // 此时数据是新的,页面是旧的。
	    console.log("App ===> 相当于 vue2.x 中 beforeUpdate")
    })
    
    onUpdated (() => { // 数据是新的,页面也是新的
    	console.log("App ===> 相当于 vue2.x 中 updated")
    })
    
    onBeforeUnmount (() => {
    // 在这边卸载组件的时候记得要清理不能被回收的东西,解绑事件,取消定时器,WebSocket
    // 如执行clearInterval,closeWebsocket,document.removeEventListener
	console.log("App ===> 相当于 vue2.x 中 beforeDestroy")
    })
    
    onUnmounted (() => {
	    console.log("App ===> 相当于 vue2.x 中 destroyed")
    })
   
    return {
    }
    
  }
}
</script>

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值