vue3--学习技术胖笔记----第一波 setup、reactive、toRefs (用json的方式赋值和指定变量)

1、方法和值都写到了setup里面就可以了

2、赋值要加ref,不然方法里面找不到获取不到变量的值

<template>
  <div>
    <a href="https://vitejs.dev" target="_blank"></a>
    <H2>欢迎光临红浪漫洗浴中心</H2>
    <div>请选择一位美女</div>
    <button 
    v-for="(item,index) in girls" 
    v-bind:key="index"
    @click="selectGirlFun(index)"
    >
      {{index}}:{{item}}
    </button>
    <div>你选择了【{{selectGirl}}】为你服务</div>
  </div>
</template>

<script lang="ts">
import {defineComponent,ref} from "vue";

export default defineComponent({
  name:"APP",
  setup(){
    const girls =ref(["大脚","刘颖","小红"]);
    const selectGirl =ref("");
    const selectGirlFun = (index:number)=>{
      selectGirl.value=girls.value[index];
    }

    return{girls,
    selectGirlFun,
    selectGirl
  }}});
</script>

 

1、使用reactive ,让方法和变量可以已键值对形式编写

<template>
  <div>
    <a href="https://vitejs.dev" target="_blank"></a>
    <H2>欢迎光临红浪漫洗浴中心</H2>
    <div>请选择一位美女</div>
    <button 
    v-for="(item,index) in data.girls" 
    v-bind:key="index"
    @click="data.selectGirlFun(index)"
    >
      {{index}}:{{item}}
    </button>
    <div>你选择了【{{data.selectGirl}}】为你服务</div>
  </div>
</template>
 
<script lang="ts">
import {reactive} from "vue";

// 接口定义下面各种类型 (规范,不写页面也可以运行,因为没有申明类型ts会默认类型推断)
interface DataProps{
  girls: string[];
  selectGirl: string;
  selectGirlFun:(index:number)=>void

}

export default({
  name:"APP",

  setup(){
    const data=reactive({
      girls:["大脚","刘颖","小红"],
      selectGirl:"",
      selectGirlFun :(index:number)=>{
          data.selectGirl=data.girls[index];
    }
    });

    return{
      data,
  }}});
</script>


<style scoped>
.logo {
  height: 6em;
  padding: 1.5em;
  will-change: filter;
}
.logo:hover {
  filter: drop-shadow(0 0 2em #646cffaa);
}
.logo.vue:hover {
  filter: drop-shadow(0 0 2em #42b883aa);
}
</style>

 

1、加入toRefs使得模版里可以直接调用变量和方法

<template>
  <div>
    <a href="https://vitejs.dev" target="_blank"></a>
    <H2>欢迎光临红浪漫洗浴中心</H2>
    <div>请选择一位美女</div>
    <button 
    v-for="(item,index) in girls" 
    v-bind:key="index"
    @click="selectGirlFun(index)"
    >
      {{index}}:{{item}}
    </button>
    <div>你选择了【{{selectGirl}}】为你服务</div>
  </div>
</template>
 
<script lang="ts">
import {reactive,toRefs} from "vue";

// 接口定义下面各种类型 (规范,不写页面也可以运行,因为没有申明类型ts会默认类型推断)
interface DataProps{
  girls: string[];
  selectGirl: string;
  selectGirlFun:(index:number)=>void

}

export default({
  name:"APP",

  setup(){
    const data=reactive({

      girls:["大脚","刘颖","小红"],
      selectGirl:"",
      selectGirlFun :(index:number)=>{
          data.selectGirl=data.girls[index];
    }
    });

  //使用toRefs 让变量和 方法可以在模版直接调用
  const refData=toRefs(data)
    return{
      ...refData,
  }}});
</script>


<style scoped>
.logo {
  height: 6em;
  padding: 1.5em;
  will-change: filter;
}
.logo:hover {
  filter: drop-shadow(0 0 2em #646cffaa);
}
.logo.vue:hover {
  filter: drop-shadow(0 0 2em #42b883aa);
}
</style>

 

 

https://www.bilibili.com/video/BV1L5411j7vj?p=5&vd_source=caabcbd2a759a67e2a3de8acbaaf08ea

posted @   凯宾斯基  阅读(979)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
历史上的今天:
2019-09-09 视频合并转码的方法
2019-09-09 web端安全测试工具
2019-09-09 APPSCAN使用外部浏览器的方法
点击右上角即可分享
微信分享提示