日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

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

瀏覽:127日期:2022-09-28 18:41:17
1.初識setUp的使用

簡單介紹下面的代碼功能:使用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>

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

2認識reactive的使用

ref函數只能夠去監聽簡單類型的數據變化。不能夠去監聽,復雜類型的變化(數組、對象)。所以我們的主角reactive就出現了。setup 中的函數會自動執行一次。

<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會自動執行的') // ref函數的注意點: // ref函數只能夠去監聽簡單類型的數據變化,不能夠去監聽,復雜類型的變化(數組、對象) // reactive 方法里面是一個對象 let satte=reactive({ arr:[ {name:'司藤',id:’0011’}, {name:'皮囊之下',id:’0011’}, {name:'百歲之約',id:’0012’}, {name:'三生三世',id:’0013’}, ] }) return { satte } },}</script>3使用reactive

實現視圖的刪除

<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’}, ] }) // 刪除被點擊的元素 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將刪除的邏輯分離出去

形成一個單獨的模塊

<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() 方法中含有一個數組 和一個方法;類似于解構 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){ for(let i=0;i<satte.arr.length;i++){if(index==i){ satte.arr.splice(i,1)} } } // 將數據satte 和方法 del 暴露出去 return { satte,del }}</script>5. 實現添加功能

事件之間傳遞參數

<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() 方法中含有一個數組 和一個方法;類似于解構 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){ for(let i=0;i<satte.arr.length;i++){if(index==i){ satte.arr.splice(i,1)} } } // 將數據satte 和方法 del 暴露出去 return { satte,del }}</script>6 將他們抽離成單獨的文件

我們想在想將添加刪除相關的邏輯,單獨抽離成一個文件。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

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’}, ] }) // 刪除被點擊的元素 function del(index){ for(let i=0;i<satte.arr.length;i++){if(index==i){ satte.arr.splice(i,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> <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() 方法中含有一個數組 和一個方法;類似于解構 let {satte,del }=onlyDelLuoJi();// 傳遞參數 let { addobj,addHander }=OnlyaddHander(satte); // 暴露給外界使用 return { satte,del,addobj, addHander} },}</script>

以上就是vue3組合API中setup、 ref、reactive的用法的詳細內容,更多關于vue組合API的資料請關注好吧啦網其它相關文章!

標簽: Vue
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
日韩av首页| 日韩一区电影| 999久久久精品国产| 97se亚洲| 国产精品一区高清| 欧美偷窥清纯综合图区| 日本天堂一区| 欧美偷窥清纯综合图区| 国产探花一区| 国产美女撒尿一区二区| 欧美激情aⅴ一区二区三区| 亚洲精品九九| 国产日韩视频| 精品理论电影在线| 久久精品免费一区二区三区| 久久婷婷久久| 亚洲一区有码| 欧美成a人片免费观看久久五月天| 亚洲人成亚洲精品| 色综合视频一区二区三区日韩 | 中文字幕在线视频网站| 亚洲韩日在线| 精品欠久久久中文字幕加勒比| 亚洲精品在线二区| 一区二区小说| 久久精品国产99久久| 国产 日韩 欧美 综合 一区| 日本亚洲欧美天堂免费| 婷婷激情综合| 国产欧美在线观看免费| 人人草在线视频| 久久久噜噜噜| 日韩二区在线观看| 福利一区二区| 国产精品嫩草99av在线| 国产精品一区亚洲| 亚洲激情久久| 精品国产乱码久久久| 99国产一区| 成人国产精选| 欧美色综合网| 91久久中文| 日韩在线观看| 国产精品久久久久久久久久白浆| 桃色av一区二区| 欧美日韩18| 久久精品亚洲人成影院| 国产欧美一区二区三区国产幕精品| 午夜av成人| 久久午夜影院| 69堂免费精品视频在线播放| jiujiure精品视频播放| 久久久久久色| 亚洲欧美网站| 中文另类视频| 精品亚洲美女网站| 最新中文字幕在线播放| 久久精品国产网站| 麻豆精品视频在线观看免费| 国产精品极品| 国产亚洲欧美日韩精品一区二区三区| 亚洲大片在线| 午夜久久福利| 亚洲一区国产| 国产视频欧美| 日韩在线一区二区| 免费久久99精品国产| 黄色日韩在线| 亚洲在线久久| 欧美影院视频| 久久99国产精品视频| 四季av一区二区凹凸精品| 精品中文在线| 国产一区亚洲| 99久久婷婷这里只有精品| 午夜在线视频一区二区区别| 伊人久久亚洲| 伊人久久国产| 亚洲18在线| 久久久久久婷| 日韩区一区二| 理论片午夜视频在线观看| 欧美日韩一二| 日韩欧美中文字幕一区二区三区| 你懂的国产精品永久在线| 激情综合网址| 鲁大师精品99久久久| 中文字幕日韩欧美精品高清在线| 免费观看亚洲| 亚洲天堂日韩在线| 成人在线超碰| 免费久久精品| 精品亚洲a∨| 一区二区91| 欧美日韩激情在线一区二区三区| 欧美激情五月| 视频精品一区| 日韩中文欧美在线| 免费观看不卡av| 国产精品99一区二区三| 欧美伊人久久| 中文无码日韩欧| 欧美成人国产| 国产精品99一区二区三| 国产精品极品| 国产亚洲精品美女久久| 精品一区在线| 国产一二在线播放| 国产精品红桃| 91精品国产经典在线观看| 免费的成人av| 一本综合精品| 日韩精品一二三四| 国产一区二区精品| 视频在线观看一区二区三区| aa国产精品| 午夜一级久久| 日韩美女国产精品| 欧美精品99| 国产66精品| 午夜电影亚洲| 国产精品久久久久蜜臀| 亚洲欧洲美洲av| 久久久久亚洲| 久久99伊人| 青青草国产精品亚洲专区无| 久久这里只有| www成人在线视频| 99免费精品| 水蜜桃久久夜色精品一区的特点| 免播放器亚洲一区| 日精品一区二区三区| 久久国产尿小便嘘嘘| 久久一区视频| 亚洲天堂日韩在线| 亚洲精品成人一区| japanese国产精品| 99久久亚洲精品| 国产午夜久久av| 国产精品婷婷| 亚洲福利专区| 高清一区二区三区av| 亚洲精品无播放器在线播放| 欧美xxxx中国| 欧美国产精品| 国产精品麻豆成人av电影艾秋| 亚洲欧美成人综合| 日韩精品诱惑一区?区三区| 91九色综合| 日本成人中文字幕在线视频| 在线观看视频免费一区二区三区| 美女av在线免费看| 久久不见久久见中文字幕免费| 日本一区二区三区视频在线看| 97精品国产一区二区三区| 亚洲欧洲免费| 欧美性感美女一区二区| 国产精品手机在线播放| 亚洲一区二区动漫| 国产传媒av在线| 日韩精品欧美精品| 一本一道久久a久久精品蜜桃| 国产精品99久久免费| 免费的成人av| 夜久久久久久| 久久中文字幕av| 丰满少妇一区| 美腿丝袜亚洲一区| 日韩精品免费视频一区二区三区 | 国产精品sss在线观看av| 亚洲人成毛片在线播放女女| 欧美日韩黑人| 伊人精品一区| 精品在线91| 免费国产自久久久久三四区久久| 久久亚洲精品中文字幕| 国产免费av一区二区三区| 亚洲精品日本| 日韩欧美激情电影| 97se亚洲| 免费一区二区三区在线视频| 久久女人天堂| 性感美女一区二区在线观看| 久久精品免费一区二区三区 | 不卡中文一二三区| 亚洲成人日韩| 男女激情视频一区| 日韩精品欧美大片| 国产亚洲久久| 老牛影视精品| 欧美日韩三区| 91大神在线观看线路一区| 久久xxx视频| 欧美日韩精品一区二区视频| 一本色道精品久久一区二区三区| 亚久久调教视频| 精品国产午夜肉伦伦影院| 日韩欧美视频专区| 99热精品在线| 青青草精品视频|