首页 > 其他分享 >VUE3学习笔记

VUE3学习笔记

时间:2024-03-21 16:35:44浏览次数:28  
标签:const money 笔记 学习 value VUE3 组件 import ref

参考链接https://blog.csdn.net/m0_66100833/article/details/134294781

生命周期

setup(): 这是一个新的入口点,在beforeCreate和created之前调用
onBeforeMount/onMounted:组件挂载前/后的生命周期钩子。
onBeforeUpdate/onUpdated:组件更新前/后的生命周期钩子。
onBeforeUnmount/onUnmounted:组件卸载前/后的生命周期钩子。
onActivated/onDeactivated:组件被 keep-alive 缓存和恢复时调用。
onErrorCaptured:当捕获一个来自子孙组件的错误时被调用。

基础用法

import { defineAsyncComponent, onMounted, reactive, computed, ref } from 'vue';


//reactive实现响应式
const state = reactive({
    count:100
})

//ref定义数据
const number = ref(0)//console.log(number.value); 
const userInput = ref('')
const name = ref("张三")
const list = ref([1,1,4,5,1,4])

//computed
const computedList = computed(
    () =>{
        return list.value.filter(i => i > 2)
    }
)

//方法
const changNumber = () => {
    number.value++;
}

const addValue = (userInput) => {
    if (userInput != '') {
        list.value.push(parseInt(userInput))
    }
}

//监听单个ref对象
watch(number, (newValue, oldValue) => {
    console.log(newValue, oldValue);
})

//监听多个ref对象
watch([number, name], (newArr, oldArr) => {
    console.log(newArr, oldArr);
},{
    immediate:true,
    deep:true
})

// 暴露变量
defineExpose({
  openDialog,
});

//ref
import { ref } from 'vue';
const inputWidthRef = ref();
console.log(noticeBarWarpRef.value)

<div ref="inputWidthRef"/>

//provide/inject
provide('key',2)

const message  = inject('key')

//defineOptions 定义属性
defineOptions({
    name:'Foo',
    inter: false
})

// 暴露变量
defineExpose({
  openDialog,
});

//接收属性(来自父组件)
const props = defineProps({
    car: String,
    money: Number
})
//上传属性(送给父组件)
const emit = defineEmits(["useMoney"])

 

父子组件-子组件

//父组件
<script setup>
import sonCom from './components/sonCom.vue'
import { ref } from 'vue';

const money = ref(10000)
</script>
<template>
    <div>
        <h3> 父组件 </h3>
    </div>
    <div>
        <sonCom car="兰博基尼" :money="money"></sonCom>
    </div>
</template>
<style>
</style>

//子组件
<script setup>
const props = defineProps({
    car: String,
    money: Number
})
console.log(props.car);  //这里注意脚本中需要写 props.属性,但是模板中不需要写,直接用属性
</script>

<template>
    <div class="son">
        <p>我是子组件</p>
        <p>我是父组件中继承了:{{ car }}, {{ money }}</p>
    </div>
</template>
<style>
.son{
   border: solid 2px brown;
   padding: 30px;
}
</style>

 

子组件-父组件

//父组件
<!-- script加上setup允许在script中直接编写组合式 api-->
<script setup>
import sonCom from './components/sonCom.vue'
import { ref } from 'vue'

const money = ref(10000);
const earnMoney = () =>{
    money.value += 50;
}
const useMoney = (restMoney) => {
    money.value = restMoney
}

</script>
<template>
    <div>
        <h3> 父组件 </h3>
        <p>
             当前money:{{ money }}
             <button @click="earnMoney"> 赚钱 </button>
        </p>
    </div>
    <div>
        <sonCom car="兰博基尼" :money="money" @useMoney="useMoney"></sonCom>
    </div>
</template>
<style>
</style>

//子组件
<script setup>
const props = defineProps({
    car: String,
    money: Number
})
const emit = defineEmits(["useMoney"])
const useMoney = () => {
    emit('useMoney', 5)
}
</script>
<template>
    <div class="son">
        <h3>我是子组件</h3>
        <p>
            我是父组件中继承了:{{ car }}, {{ money }}
            <button @click="useMoney"> 花钱 </button>
        </p>
    </div>
</template>
<style>
.son{
   border: solid 2px brown;
   padding: 30px;
   margin-top: 10px;
}
</style>

 

pinia

import { defineStore } from 'pinia'

 

。。。。。

翻译

搜索

复制

标签:const,money,笔记,学习,value,VUE3,组件,import,ref
From: https://www.cnblogs.com/zoushuangyu/p/18087656

相关文章

  • Unity学习笔记 6.2D换帧动画
    下载源码UnityPackage目录1.导入图片1.1.图片的叠放顺序2.图片切片3.用动画控制器让马......
  • 使用appuploder流程笔记
    使用appuploder流程笔记1.如何没有账号去apple官网注册一个,地址:https://developer.apple.com/account2.下载解压appuploder,双击打开,用刚刚注册的账号登录,下载地址:http://www.applicationloader.net/(使用第一次后,可以点击记住密码即可一键登录)注意:未支付apple的账号需要勾......
  • 前端学习-vue学习011-Emit
    官方教程链接子组件还可以向父组件触发事件子组件声明触发的事件,并且带参数触发<scriptlang="ts"setup>constemit=defineEmits(['res'])emit('res','hithisismymsg')//第一个参数是事件名称,其他参数都会传给父组件</script>父组件接收参数<template>......
  • elasticsearch ilm 再学习与实战
    目录了解应用其他脚本了解如果你对es有一定的使用经验,相信应该听过ilm机制,没错,就是es的索引生命周期管理机制。在实际项目应用中,合理应用ilm机制可以解放我们的双手,不用手动去管理索引的新建、切分,只需要内部机制处理索引,如:1.最新的数据可读可写2.次新的数据仅可读......
  • c学习记录
    Chap4字符串的格式化输入与输出#include<stdio.h>intmain(void){ intage; floatassets; charpet[30];//用于储存字符串 printf("Enteryourage,assets,andfavoritepet.\n"); scanf("%d%f",&age,&assets);//这里使用& scanf(&quo......
  • Markdown学习
    Markdown学习标题二级标题三级标题字体Hello,WorldHello,WorldHello,WorldHello,World引用引用>+空格分割线图片超链接博客地址列表ABCABC表格名字性别生日测试男1999.10.10代码publichello......
  • node.js学习:fs.writeFile方法和fs.appendFile方法
     前言初学者,想记录一下Node.js学习上的一些新知fs.writeFile方法语法:fs.writeFile(file,data,[options],callback)file:要写入数据的文件路径。data:要写入的数据,可以是字符串或者缓冲区。options(可选):一个对象,包含文件写入的选项。常见的选项包括编码方式和文......
  • 深入理解并行编程-学习笔记
    一简介1并行编程的目标并行编程(在单线程编程的目标之上)有如下三个主要目标。1.性能。2.生产率。3.通用性。线程优化:性能与扩展通用:需要牢记的是,并行编程只是提高性能的方案之一。其他熟知的方案按实现难度递增的顺序罗列如下。1.运行多个串行应用实例。2.利用现有的......
  • 微软的Garnet的安装学习以及与Redis的简单对比
    微软的Garnet的安装学习以及与Redis的简单对比安装方式官网上面其实没有写如何安装garnet的很多人见识用nuget的方式进行安装我这边简单尝试了下也没看出来怎么用exe没办法只能学习dockerfile里面的内容在windows上面进行编译.下载地址https://codeload.github.com......
  • 洛谷-P2178 学习笔记
    题面[NOI2015]品酒大会题目描述一年一度的“幻影阁夏日品酒大会”隆重开幕了。大会包含品尝和趣味挑战两个环节,分别向优胜者颁发“首席品酒家”和“首席猎手”两个奖项,吸引了众多品酒师参加。在大会的晚餐上,调酒师Rainbow调制了\(n\)杯鸡尾酒。这\(n\)杯鸡尾酒排成一......