【vue3】vuex 和组件通信

vuex

定义:全局状态管理器,全局数据共享。 特点:数据双向响应,数据流是单向的【自上而下,从父级传到子级的过程,并且子级不可以修改父级的数据】。 缺点:数据存在内存中,刷新页面会丢失改变的状态值。需要使用持久化插件把数据存在本地。vuex-persist vue2的vuex和vue3里的vuex没有半点更改。只有初始化的语法略有改动。

差异

  1. 由createStore函数创建store实例
  2. 组件内使用store使用useStore高阶函数得到store对象

持久化插件

vuex-persister

vue3代码的组件内抽离优化【组件瘦身】

可以抽离数据和方法到外部js中,但是对于props,store,生命周期和router的初始化不可以抽离。

组件通信

  1. 父传子,子组件使用defineProps函数接收
  2. 子传父,子组件使用defineEmits函数接收
  3. v-model升级成可以绑定多个
  4. 子组件向父组件主动暴露数据,使用defineExpose函数

vue-router

语法没有变化,只是初始化的时候需要使用createRouter创建路由实例,mode选项变成了history,并且使用 createWebHistory方法初始化。

组件内获取路由实例使用 useRouter函数初始化

组件内获取当前路由对象 useRoute函数初始化

teleport vue3新增的内置组件,可以将包裹的元素挂在到指定的任意元素中去,从而脱离当前组件的文档位置,但是作用域还有数据等还是

使用的当前组件

虚拟dom和diff算法

  1. 虚拟dom就是通过diff算法对js生产的dom计算得来的,它并不是真实的dom节点,是js生成的。
  2. diff算法:递归+对比计算,新旧dom对比,同级对比,发现有不一样的地方,直接用新的替换旧的。

h() 创建虚拟dom

123

{ type: "div", props: [ 'id', 'class' ], children: "123" or children: { type: "p" } or [{},{}] } - 语法:`h('标签类型', { id: "", class: "", /* innerHTML */ }, [children])`

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Pinia-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值