熬夜讲解vue3组合API中setup、 ref、reactive的用法以及hooks的使用
2023-09-27 14:25:56 时间
1.初识setUp的使用
如何独立封装vue3选项式Api(重点)和组合式Api的生命周期钩子函数 相信玩过vue3的同学们,大部分应该都了解或者使用过vue2吧,那么对选项式的api就不会陌生,或者你不熟悉名字,看一下下面的代码就非常清楚了。
vue3 中隐藏的实用API 在实际项目中,我们通常会封装一些工具类,如判断数组、对象、函数等…… 然而在 vue3 已经内置了很多常用的工具函数,因此我们不必再重复造轮子
简单介绍下面的代码功能
使用ref函数 去使用监听某一个变量的变化 并且把它渲染到视图上。
setUp函数是组合API的入口函数。这个是非常重要的。
setUp可以去监听变量的变化哈 我们将会利用它
ref 在vue中内置 需要导入。
template div {{ countNum}} /div button click handerFunc 按钮 /button /template script import {ref} from vue export default { name: App , setup() { // 这一句表示的是定义了一个变量count。这个变量的初始值是100 let countNum ref(100); // 在组合API中 如果想定义一个方法 不用定义到methods中去。直接定义就可以了 function handerFunc(){ // console.log(countNum);//countNum是一个对象 countNum.value 10; //在组合api中定义的方法 或者变量。如果外界需要使用 那么必须通过 return {aaa,func} 的方式暴露出去 return { countNum ,handerFunc} /script
ref函数只能够去监听简单类型的数据变化。
不能够去监听 复杂类型的变化。
所以我们的主角reactive就出现了。
setup 中的函数会自动执行一次。
template div li v-for item in satte.arr :key item.id {{item.name }} /li /ul /div /template script import {reactive} from vue export default { name: App , setup(){ console.log( setUp会自动执行的 ) // ref函数的注意点 // ref函数只能够去监听简单类型的数据变化 不能够去监听 复杂类型的变化(对象) // reactive 方法里面是一个对象 let satte reactive({ arr:[ {name: 司藤 ,id: 0011 }, {name: 皮囊之下 ,id: 0011 }, {name: 百岁之约 ,id: 0012 }, {name: 三生三世 ,id: 0013 }, return { satte } /script
template div li v-for (item,index) in satte.arr :key index click del(index) {{item.name }} /li /ul /div /template script import {reactive} from vue export default { name: App , setup(){ let satte reactive({ arr:[ {name: 司藤 ,id: 0011 }, {name: 皮囊之下 ,id: 0011 }, {name: 百岁之约 ,id: 0012 }, {name: 三生三世 ,id: 0013 }, // 删除被点击的元素 function del(index){ satte.arr.splice(index,1) return { satte, del} /script
template div li v-for (item,index) in satte.arr :key index click del(index) {{item.name }} /li /ul /div /template script import {reactive} from vue export default { name: App , setup(){ // onlyDelLuoJi() 方法中含有一个数组 和一个方法 类似于解构 let {satte,del } onlyDelLuoJi(); // 暴露给外界使用 return { satte,del} function onlyDelLuoJi(){ let satte reactive({ arr:[ {name: 司藤 ,id: 0011 }, {name: 皮囊之下 ,id: 0011 }, {name: 百岁之约 ,id: 0012 }, {name: 三生三世 ,id: 0013 }, // 删除被点击的元素 function del(index){ satte.arr.splice(index,1) // 将数据satte 和方法 del 暴露出去 return { satte,del } /script
template div div input type text v-model addobj.watchTv.name button click addHander 添加 /button /div li v-for (item,index) in satte.arr :key index click del(index) {{item.name }} /li /ul /div /template script import {reactive} from vue export default { name: App , setup(){ // onlyDelLuoJi() 方法中含有一个数组 和一个方法 类似于解构 let {satte,del } onlyDelLuoJi(); // 传递参数satte 是onlyDelLuoJi函数中提供的satte。进行传递 let { addobj,addHander } OnlyaddHander(satte); // 暴露给外界使用 return { satte,del,addobj, addHander} //添加功能模块 function OnlyaddHander(satte){ console.log( 初始化添加 ,satte) let addobj reactive({ watchTv:{ name: , id: function addHander(){ // 重置清空 错吴做法 // satte.arr.push(addobj.watchTv) // addobj.watchTv.name // addobj.watchTv.id // 正确做法 let oldobj Object.assign({}, addobj.watchTv) satte.arr.push(oldobj) return { addobj,addHander } //删除功能模块 function onlyDelLuoJi(){ console.log( 删除初始化 ) let satte reactive({ arr:[ {name: 司藤 ,id: 0011 }, {name: 皮囊之下 ,id: 0011 }, {name: 百岁之约 ,id: 0012 }, {name: 三生三世 ,id: 0013 }, // 删除被点击的元素 function del(index){ satte.arr.splice(index,1) // 将数据satte 和方法 del 暴露出去 return { satte,del } /script
我们想在想将添加删除相关的逻辑 单独抽离成一个文件。
add.js 是添加相关的逻辑
del.js 是删除的相关逻辑
import { reactive } from vue function OnlyaddHander(satte){ console.log( 初始化添加 ,satte) let addobj reactive({ watchTv:{ name: , id: function addHander(e){ // 重置清空 错吴做法 // satte.arr.push(addobj.watchTv) // addobj.watchTv.name // addobj.watchTv.id // 正确做法 let oldobj Object.assign({}, addobj.watchTv) satte.arr.push(oldobj) e.preventDefault(); return { addobj,addHander } export default OnlyaddHander
import {reactive } from vue function onlyDelLuoJi() { console.log( 删除初始化 ) let satte reactive({ arr:[ {name: 司藤 ,id: 0011 }, {name: 皮囊之下 ,id: 0011 }, {name: 百岁之约 ,id: 0012 }, {name: 三生三世 ,id: 0013 }, // 删除被点击的元素 function del(index){ satte.arr.splice(index,1) // 将数据satte 和方法 del 暴露出去 return { satte,del } export default onlyDelLuoJi
template div div input type text v-model addobj.watchTv.name button click addHander 添加 /button /div li v-for (item,index) in satte.arr :key index click del(index) {{item.name }} /li /ul /div /template script import onlyDelLuoJi from ./components/del import OnlyaddHander from ./components/add export default { name: App , setup(){ // onlyDelLuoJi() 方法中含有一个数组 和一个方法 类似于解构 let {satte,del } onlyDelLuoJi(); // 传递参数 let { addobj,addHander } OnlyaddHander(satte); // 暴露给外界使用 return { satte,del,addobj, addHander} /script
如果你觉得不错请点一个推荐。
你的推荐是我写下去的动力。非常感谢
如何独立封装vue3选项式Api(重点)和组合式Api的生命周期钩子函数 相信玩过vue3的同学们,大部分应该都了解或者使用过vue2吧,那么对选项式的api就不会陌生,或者你不熟悉名字,看一下下面的代码就非常清楚了。
vue3 中隐藏的实用API 在实际项目中,我们通常会封装一些工具类,如判断数组、对象、函数等…… 然而在 vue3 已经内置了很多常用的工具函数,因此我们不必再重复造轮子
相关文章
- 解决方案:Springboot+Vue3+Mybatis+Axios 前后端分离项目中 遇见的若干报错和踩坑避坑(二)
- 用Vue3构建企业级前端应用,TS能让你更轻松点
- 《Vue3.x +TpyeScript实践指南》勘误
- vue3函数setUp和reactive函数详细讲解
- Vue3基础(一)___ref
- 瞧,Vue3.x最小原型系统就是这么简单
- Vue3 全家桶 + Element Plus + Vite + TypeScript + Eslint 项目配置最佳实践
- Vue3学习(二)使用Vite项目初始化,集成typescript
- 【vue3】基础概念的介绍
- vue3:组件注册
- Vue3通透教程【十】跨级组件通讯—依赖注入
- 在Vue3这样子写页面更快更高效
- idea vue 修改创建模板,快速创建vue2 vue3 模板
- Vue3.x 报 Uncaught TypeError:Object(...) is not a function( Vue3对象不是函数解决思路)