vue 3 APIのsetup、ref、reactiveの使用大全書を組み合わせます。


1.ファーストフードの使用
以下のコード機能を簡単に紹介します。
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>

2 reactiveの使用を認識する
ref関数は、簡単なタイプのデータの変化をモニターするだけです。
待ち受けはできません。複雑なタイプの変化(配列、オブジェクト)。
だから私たちの主人公reactiveが現れました。
セットの関数は自動的に一回実行されます。

<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>

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>
以上がvue 3グループAPIのsetup、ref、reactiveの使い方の詳細です。vueグループAPIに関する資料は他の関連記事に注目してください。