当前位置: 首页 > news >正文

【3.0】vue3语法

【3】vue3语法

【一】vue前提

【1】定义变量

  • # 1 const是常量--》不允许变的
    # 2 咱们用 ref包裹后,是个对象,虽然对象是常量,对象不能变,对象.value可以变化
    # 3 之所以定义成const原因是,后期不能修改对象 【对象.value可以改】
    # 4 如果用let声明 ,后期修改对象不会报错,导致程序出问题
    

【2】js代码组合式

  • # 组合式和配置项能不能混用?-可以混用-并且在配置项api的方法中,可以拿到setup函数中定义的变量-以后只用一种-配置项-组合式(推荐的)
    

【二】setup函数

【1】setup介绍

  • setup用于script中,书写组合式代码,将变量和方法都当放入setup函数中,并且把数据要return出去,就直接可以在tenmplates中使用

  • <script>let app=Vue.createApp({setup() {//---------------放变量和方法---------------let count=Vue.ref(0)let a=10(不包裹的)let handleAdd=()=>{count.value++}//-----------将变量和方法return出去--------return {count,handleAdd,a}}, })app.mount("#app")
    </script>
    

【2】setup另一种用法

  • <script setup>  </script>
    
  • 这样写,就可以直接定义函数和变量,不需要返回;组件只需要导入,不需要注册

    <script setup>
    import HelloWorld from '@/components/HelloWorld.vue'
    import AboutView from "@/views/AboutView.vue"
    import {ref} from "vue";//定义值类型
    const count=ref(0)
    function add(){count.value++}
    //其他方法,正常写
    watch(...)
    </script>
    

【三】响应式ref和feactive

  • 如果不包裹,数据会改变,但是在前端不会显示,只有响应式的数据才会在界面实时更新变化
  • 不包裹,就是
(1)包裹
  • ref包裹值类型(数字,字符串,布尔),变成响应式
  • reactive包裹引用类型(对象,数组),做成响应式
(2)操作
  • ref包裹的,需要.value才能操作值(因为变成一个object类型了)
  • reactive包裹的,直接操作
(3)template使用
  • 和平时一样,ref包裹的不用.value

  • 示例

    <template><div class="about"><h3>{{count}}</h3><button @click="add">点我加1</button><h3>{{user_info.username}}</h3><button @click="changename">点我切换名字</button></div>
    </template><script>
    import {ref,reactive} from "vue";export default {name:'AboutView',setup(){//定义值类型const count=ref(0)function add(){count.value++}//定义引用类型const user_info=reactive({username:'zhou',age:18})function changename(){user_info.username='zhou2'}//所有都return出去return {count,add,user_info,changename}}}
    </script>
    

【四】组件间通信

【1】父传子defineProps
  • 父组件

    ---html(父亲提供信息msg,儿子提供变量msg_s)<HelloWorld :msg_s="msg"></HelloWorld>
    
  • 子组件

    ---js(儿子传递信息msg_sdefineProps({msg_s: String,})
    

【2】子传父defineEmits

  • 父组件

    --html(具有中间函数)<HelloWorld @send="handleReceive"></HelloWorld><p>父组件中得name:{{name}}</p>
    
    --js(父亲定义接收函数handleReceive)<script setup>const name = ref('')function handleReceive(a){name.value=a}</script>
    
  • 子组件

    --js(定义发送函数send)let $emit = defineEmits(['send']) # 等同于之前的  this.$emitconst name =ref('')const handleSend=()=>{$emit('send',name.value)}
    

【五】插槽

【1】默认插槽

【2】剧名插槽

<templates></templates>--slot插槽
<style> </style>---scope控制范围
<script> </script>---setup放函数和变量
#js中
【data】---const定义变量(类型ref和reactive)
【methods】--子传父:父亲接收的函数中$emit--
【属性】--计算computed(值变化就启动)--监听watch(监听新老值变化)--局部组件 commponts--混入mixin(抽取公共代码)--props(父传子,儿子接收)
#插件--自定义export default{ install(Vue){..--然后import
#路由--路由跳转this.$router.push()--路由守卫router.beforeEach--本地路由this.$route
http://www.lryc.cn/news/425394.html

相关文章:

  • Navicat Monitor 荣获 2024 年 DBTA “最佳数据库性能解决方案”读者选择奖
  • [论文笔记]ZeRO: Memory Optimizations Toward Training Trillion Parameter Models
  • shuashuashua
  • k8s之HPA
  • fun状态上传,并可手动控制
  • 【Canvas与艺术】四扇叶结
  • 基于DVWA-Brute Force(LowMedium)的渗透测试
  • 水库大坝安全预警系统的作用
  • 容器化部署ES集群
  • 使用排名前三的华为解锁工具来绕过忘记的华为锁屏密码
  • 战神之父和前暴雪总裁都很期待《黑神话》:太酷想玩
  • 用户体验的优化:观测云在用户行为分析中的应用
  • ModelScope 部署 Flux 模型
  • ArkTs基础语法-声明式UI-基本概念
  • Day26 线程学习
  • eNSP 华为三层交换机实现VLAN间通信
  • 【多模态大模型】LLaMA in arXiv 2023
  • (转)java中restful接口和普通接口的区别
  • 灵办AI免费ChatGPT4人工智能浏览器插件快速便捷(多功能)
  • VulnHub:BlueMoon
  • 处理filter里抛出的异常
  • IndexedDB深度解析:JavaScript的客户端数据库
  • C语言中的函数指针和返回值为数组的函数指针对比
  • 根据字符串的长度和字符值的大小来对字符串切片进行排序
  • RabbitMQ 的工作原理
  • WPF 资源、引用命名空间格式、FrameworkElement、Binding、数据绑定
  • vue3-03-创建响应式数据的几种方法
  • stm32智能颜色送餐小车(openmv二维码识别+颜色识别+oled显示)
  • 对接的广告平台越多,APP广告变现的收益越高?
  • LINUX原始机安装JDK