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

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

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

瀏覽:126日期: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| 日本a级不卡| 久久不见久久见中文字幕免费| 国产精品一卡| 国产不卡一区| 一区二区三区视频免费观看| av一区二区高清| 日韩影院在线观看| 欧美日韩一区二区高清| 精品国产欧美| 五月天久久久| 久久激情五月激情| av中文字幕在线观看第一页| 成人看片网站| 久久最新视频| 美女精品一区二区| 亚洲国产影院| 国产欧美日韩精品一区二区免费| 国产精品二区不卡| 美女网站久久| 亚洲涩涩在线| 麻豆视频一区二区| 亚洲一级淫片| 日韩欧美一区二区三区在线视频 | 老鸭窝毛片一区二区三区| 久久av日韩| 久久精品av| 国产福利一区二区三区在线播放| 亚洲午夜电影| 久久久久国产精品一区二区| 日韩欧美三区| 精品一区视频| 国产精品三级| 在线综合欧美| 肉色欧美久久久久久久免费看| 亚洲精品极品| 午夜在线视频一区二区区别| 桃色av一区二区| 麻豆久久久久久| 欧美欧美黄在线二区| 无码日韩精品一区二区免费| 日韩激情综合| 99国产成+人+综合+亚洲欧美| 国产精品字幕| 成人羞羞在线观看网站| 国产精品99在线观看| 日韩欧美高清一区二区三区| 久久久久亚洲| 欧美sm一区| 激情亚洲影院在线观看| 桃色一区二区| 91看片一区| 先锋影音久久久| 国产精品久久久久久久免费软件 | 亚洲国产专区| 国产精品资源| 国产美女精品视频免费播放软件| 老司机久久99久久精品播放免费| 999国产精品视频| 国产高清不卡| 国产盗摄——sm在线视频| 精品淫伦v久久水蜜桃| 精品亚洲免a| 97精品国产| 日韩精品网站| 亚洲欧美日本日韩| 亚洲精品一级| 美女久久久精品| 国产一区二区亚洲| 国产va免费精品观看精品视频| 国产亚洲字幕| 精品视频在线一区二区在线| 日韩av不卡在线观看| 麻豆国产欧美日韩综合精品二区| 7777精品| 日韩天堂在线| 国产亚洲永久域名| 91精品国产经典在线观看| 久久精品国产网站| 97欧美在线视频| 日本午夜大片a在线观看| 日韩久久精品网| 韩国一区二区三区视频| 亚洲精华国产欧美| 蜜桃av一区| 亚洲精选久久| 国产精品片aa在线观看| 中文在线а√天堂| 久久精品国产亚洲夜色av网站 | 欧美日韩视频一区二区三区| 免费久久精品视频| 日韩精品三区四区| 欧美日韩亚洲三区| 国产精品av久久久久久麻豆网| 手机精品视频在线观看| 欧美欧美黄在线二区| 日韩av二区| 欧美精品中文字幕亚洲专区| 日本成人精品| 欧美综合国产| 日韩精品一级中文字幕精品视频免费观看 | 亚洲日本网址| 亚久久调教视频| 日韩在线短视频| 国产综合婷婷| 国产精品亚洲综合在线观看| 日韩欧美一区二区三区免费看| 午夜精品网站| 国产精品一区二区中文字幕| 婷婷丁香综合| 精品一区二区三区亚洲| 激情欧美国产欧美| 国产精品麻豆成人av电影艾秋| 久久久久国产精品一区三寸| 日本久久一区| 精品日韩毛片| 国产一区三区在线播放| 色8久久久久| 色婷婷精品视频| 青草综合视频| 免费成人在线视频观看| 激情综合五月| 国产精品xxxav免费视频| 久久亚洲图片| 私拍精品福利视频在线一区| 色8久久久久| 国产视频欧美| 欧美a级一区二区| 老司机久久99久久精品播放免费| 日韩一区电影| 久久蜜桃资源一区二区老牛| 精品一区二区三区在线观看视频| 亚洲欧洲美洲国产香蕉| 亚洲综合精品| 日韩欧美一区二区三区在线观看 | 日韩高清三区| 国产91久久精品一区二区| 日韩精品三区四区| 美女一区网站| 国产日韩欧美一区二区三区在线观看| 国产99久久久国产精品成人免费| 91福利精品在线观看| 亚洲一区成人| 国产a久久精品一区二区三区| 日本国产一区| 麻豆精品av| 亚洲主播在线| 日韩在线第七页| 美女毛片一区二区三区四区最新中文字幕亚洲 | 日韩成人午夜精品| 9色精品在线| 1024精品一区二区三区| 日本不卡高清视频| 亚洲欧美在线综合| 在线精品一区| 日韩国产欧美视频| 国产精品久久777777毛茸茸| 日韩中文字幕区一区有砖一区| 国产精品1luya在线播放| 日韩一级欧洲| 欧美日韩国产欧| 欧美一级二区| 日韩欧美网址| 国产精品亚洲人成在99www| 精品三级国产| 好看不卡的中文字幕| 国产日产一区| 久久影视三级福利片| 欧洲激情综合| 欧美国产免费| 香蕉国产精品| 国产精品分类| 韩国久久久久久| 国产欧美精品久久| 在线日韩av| 久久久久九九精品影院| 一区免费在线| 日韩精品免费一区二区在线观看| 亚洲精品在线二区| 日韩欧美在线中字| 国产欧美日韩精品高清二区综合区| 亚洲免费精品| 欧美精品日日操| 国产精品嫩草影院在线看| 日韩午夜高潮| 亚洲免费高清| 秋霞国产精品| 日本特黄久久久高潮| 99国产精品久久久久久久成人热| 成人福利视频| 国产精品一区二区三区美女| 99国产精品99久久久久久粉嫩| 蜜臀久久99精品久久一区二区|