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