国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

vue3組合API中setup、 ref、reactive的使用大全

瀏覽:47日期:2022-09-28 18:41:17
1.初識(shí)setUp的使用

簡(jiǎn)單介紹下面的代碼功能:使用ref函數(shù),去使用監(jiān)聽(tīng)某一個(gè)變量的變化,并且把它渲染到視圖上。setUp函數(shù)是組合API的入口函數(shù)。這個(gè)是非常重要的。setUp可以去監(jiān)聽(tīng)變量的變化哈!我們將會(huì)利用它ref 在vue中內(nèi)置,需要導(dǎo)入。

<template> <div>{{ countNum}}</div> <button @click='handerFunc'>按鈕</button></template><script>import {ref} from ’vue’export default { name: ’App’, setup() { // 這一句表示的是定義了一個(gè)變量count。這個(gè)變量的初始值是100 let countNum=ref(100); // 在組合API中,如果想定義一個(gè)方法,不用定義到methods中去。直接定義就可以了 function handerFunc(){ // console.log(countNum);//countNum是一個(gè)對(duì)象 countNum.value += 10; } //在組合api中定義的方法,或者變量。如果外界需要使用,那么必須通過(guò) return {aaa,func} 的方式暴露出去 return { countNum ,handerFunc} }}</script>

vue3組合API中setup、 ref、reactive的使用大全

2認(rèn)識(shí)reactive的使用

ref函數(shù)只能夠去監(jiān)聽(tīng)簡(jiǎn)單類(lèi)型的數(shù)據(jù)變化。不能夠去監(jiān)聽(tīng),復(fù)雜類(lèi)型的變化(數(shù)組、對(duì)象)。所以我們的主角reactive就出現(xiàn)了。setup 中的函數(shù)會(huì)自動(dòng)執(zhí)行一次。

<template> <div> <ul> <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會(huì)自動(dòng)執(zhí)行的') // ref函數(shù)的注意點(diǎn): // ref函數(shù)只能夠去監(jiān)聽(tīng)簡(jiǎn)單類(lèi)型的數(shù)據(jù)變化,不能夠去監(jiān)聽(tīng),復(fù)雜類(lèi)型的變化(數(shù)組、對(duì)象) // reactive 方法里面是一個(gè)對(duì)象 let satte=reactive({ arr:[ {name:'司藤',id:’0011’}, {name:'皮囊之下',id:’0011’}, {name:'百歲之約',id:’0012’}, {name:'三生三世',id:’0013’}, ] }) return { satte } },}</script>3使用reactive

實(shí)現(xiàn)視圖的刪除

<template> <div> <ul> <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’}, ] }) // 刪除被點(diǎn)擊的元素 function del(index){ for(let i=0;i<satte.arr.length;i++){if(index==i){ satte.arr.splice(i,1)} } } return { satte, del} },}</script>

vue3組合API中setup、 ref、reactive的使用大全

4將刪除的邏輯分離出去

形成一個(gè)單獨(dú)的模塊

<template> <div> <ul> <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() 方法中含有一個(gè)數(shù)組 和一個(gè)方法;類(lèi)似于解構(gòu) 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’}, ] }) // 刪除被點(diǎn)擊的元素 function del(index){ for(let i=0;i<satte.arr.length;i++){if(index==i){ satte.arr.splice(i,1)} } } // 將數(shù)據(jù)satte 和方法 del 暴露出去 return { satte,del }}</script>5. 實(shí)現(xiàn)添加功能

事件之間傳遞參數(shù)

<template> <div> <div> <input type='text' v-model='addobj.watchTv.name'> <button @click='addHander'>添加</button> </div> <ul> <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() 方法中含有一個(gè)數(shù)組 和一個(gè)方法;類(lèi)似于解構(gòu) let {satte,del }=onlyDelLuoJi();// 傳遞參數(shù)satte 是onlyDelLuoJi函數(shù)中提供的satte。進(jìn)行傳遞 let { addobj,addHander }=OnlyaddHander(satte); // 暴露給外界使用 return { satte,del,addobj, addHander} },}//添加功能模塊function OnlyaddHander(satte){ console.log(’初始化添加’,satte) let addobj=reactive({watchTv:{ name:'', id:''} }); function addHander(){ // 重置清空 錯(cuò)吳做法// 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’}, ] }) // 刪除被點(diǎn)擊的元素 function del(index){ for(let i=0;i<satte.arr.length;i++){if(index==i){ satte.arr.splice(i,1)} } } // 將數(shù)據(jù)satte 和方法 del 暴露出去 return { satte,del }}</script>6 將他們抽離成單獨(dú)的文件

我們想在想將添加刪除相關(guān)的邏輯,單獨(dú)抽離成一個(gè)文件。add.js 是添加相關(guān)的邏輯del.js 是刪除的相關(guān)邏輯

import { reactive } from 'vue'function OnlyaddHander(satte){ console.log(’初始化添加’,satte) let addobj=reactive({watchTv:{ name:'', id:''} }); function addHander(e){// 重置清空 錯(cuò)吳做法// 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

adel.js

import {reactive } from 'vue'function onlyDelLuoJi() { console.log(’刪除初始化’) let satte=reactive({ arr:[ {name:'司藤',id:’0011’}, {name:'皮囊之下',id:’0011’}, {name:'百歲之約',id:’0012’}, {name:'三生三世',id:’0013’}, ] }) // 刪除被點(diǎn)擊的元素 function del(index){ for(let i=0;i<satte.arr.length;i++){if(index==i){ satte.arr.splice(i,1)} } } // 將數(shù)據(jù)satte 和方法 del 暴露出去 return { satte,del }}export default onlyDelLuoJi

主文件

<template> <div> <div> <input type='text' v-model='addobj.watchTv.name'> <button @click='addHander'>添加</button> </div> <ul> <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() 方法中含有一個(gè)數(shù)組 和一個(gè)方法;類(lèi)似于解構(gòu) let {satte,del }=onlyDelLuoJi();// 傳遞參數(shù) let { addobj,addHander }=OnlyaddHander(satte); // 暴露給外界使用 return { satte,del,addobj, addHander} },}</script>

以上就是vue3組合API中setup、 ref、reactive的用法的詳細(xì)內(nèi)容,更多關(guān)于vue組合API的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Vue
相關(guān)文章:
主站蜘蛛池模板: 一级黄色香蕉视频 | 一级做a| 视频二区在线 | 久久免费精品视频在线观看 | 性欧美成人依依影院 | 国产香蕉国产精品偷在线观看 | 制服丝袜怡红院 | 亚洲一区不卡 | 久草中文在线视频 | 成人网18免费网站 | 精品亚洲欧美高清不卡高清 | 久久免费香蕉视频 | 色综合在 | 久久久久久88色愉愉 | 九九黄色影院 | 亚洲精品区在线播放一区二区 | 免费一级大毛片a一观看不卡 | 欧美激情特级黄aa毛片 | 极品欧美 | 免费一级片网站 | 久久99国产精品亚洲 | 国产亚洲精品国产 | 国产高清在线 | 欧美一级毛片免费播放器 | 亚洲高清视频在线观看 | 亚洲精品不卡午夜精品 | 老司机深夜影院入口aaaa | 国产自产v一区二区三区c | 成人午夜影视 | 精品国产自在在线在线观看 | 99视频在线精品 | 色综合久久88中文字幕 | 亚洲天堂久久新 | 欧美一级视频在线 | 日韩精品首页 | 国产精品一区二区三区久久 | α片毛片 | 欧美jizzhd极品欧美 | 永久免费毛片在线播放 | 亚洲国产精品久久日 | 日本b站一卡二卡乱码入口 日本s色大片在线观看 |