vue3和vue2常见的使用差异 setup函数

38 篇文章 0 订阅

vue3和vue2常见的使用差异

学习路径

单文件组件的渲染
setup
单文件组件的template
子传父的实现

单文件组件的渲染

1.通过解构的方式获取createApp
2.通过createApp创建应用

import { createApp } from 'vue'
import App from './App.vue'
// import './index.css'

createApp(App).mount('#app')

单文件组件的template

vue 规定:每个组件对应的模板结构,需要定义到 节点中
在 vue 3.x 的版本中,<template> 节点内的 DOM 结构支持多个根节点。

<template>
  <h1>{{ msg }}</h1>
  <button @click="count++">count is: {{ count }}</button>
  <p>Edit <code>components/HelloWorld.vue</code> to test hot module replacement.</p>
</template>

注意:<template> 是 vue 提供的容器标签,只起到包裹性质的作用,<template> 它不会被渲染为真正的 DOM 元素

setup函数

1.setup的基本特性

  1. setup()函数是 vue3 中,专门为组件提供的新属性。它为我们使用 vue3 的 新特性提供了统一的入口
  2. setup函数是处于 生命周期函数beforeCreateCreated两个钩子函数之前的函数
  3. setup函数中是无法 使用 data 和 methods 中的数据和方法的
  4. 在setup函数中定义的属性和方法最后都是需要 return 出去的,这样我们就可以在模板中直接访问该对象中的属性和方法

2.在setup中定义响应式数据并返回

  1. 解构的方式引入reactive import {reactive} from 'vue'
  2. 创建响应式数据 let state= reactive({数据})
  3. 返回return {state}
  4. 在模板中使用

3.在setup中定义函数并使用

  1. 在setup中定义函数
  2. 同样需要返回
  3. 在模板中调用函数:<button @click="login">提交</button>

代码演示

<template>
  <div>
    <p>{{ state.msg }}</p>
    <button @click="getMsg">点击</button>
  </div>
</template>

<script>
import { reactive } from "vue";
export default {
  name: "App",
  setup() {
    let state = reactive({
      msg: "hello lsh",
    });
    function getMsg() {
      state.msg = "lsh dsb";
      console.log(state.msg);
    }
    //需要返回定义好的响应式数据
    return {
      state,
      getMsg,
    };
  },
};
</script>

4.在setup函数的参数

对于 setup 函数来说,它接收两个参数,分别为:

  1. props:通过 prop 传递过来的所有数据,我们都可以在这里进行接收。并且获取到的数据将保持响应性
  2. context:context 是一个 JavaScript 对象,这个对象暴露了三个组件的属性,我们可以通过 ‘解构 ’的方式来分别获取这三个属性
    1. attrs: 它是绑定到组件中的 非 props 数据,并且是非响应式的。
    2. slots: 是组件的插槽,同样也不是 响应式的。
    3. emit:是一个方法,相当于 vue2 中的 this.$emit 方法

5. 子传父的实现

  1. 子组件发出事件
  2. 父组件进行监听
  3. 通过ref方法关联节点
  4. 为指定的节点赋值
    在这里插入图片描述
  • 7
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于Vue 3,我们可以同时使用`setup`函数和`setup`语法糖。在组件中,`setup`函数是一个特殊的函数,用于替代Vue 2中的选项式API(如created、mounted等)。它接收两个参数:props和context。 使用`setup`函数时,我们可以在其中访问到组件的props,并且可以返回响应式的数据、计算属性、方法等供模板使用。例如: ```javascript <script> import { ref, reactive } from 'vue'; export default { props: { message: String, }, setup(props) { const count = ref(0); // 响应式数据 const state = reactive({ name: 'John', age: 25, }); // 响应式对象 const increaseCount = () => { count.value++; }; // 响应式方法 return { count, state, increaseCount, }; }, }; </script> ``` 在模板中,我们可以直接使用`count`、`state`以及`increaseCount`: ```html <template> <div> <p>{{ message }}</p> <p>Count: {{ count }}</p> <p>Name: {{ state.name }}</p> <p>Age: {{ state.age }}</p> <button @click="increaseCount">Increase Count</button> </div> </template> ``` 除了使用`setup`函数外,Vue 3还引入了`<script setup>`语法糖,它可以更简洁地定义和使用响应式数据、计算属性、方法等。使用`<script setup>`时,我们无需再定义`props`选项,而是直接通过`defineProps`和`withDefaults`来声明和获取props。 下面是一个使用`<script setup>`的示例: ```html <template> <div> <p>{{ message }}</p> <p>Count: {{ count }}</p> <p>Name: {{ state.name }}</p> <p>Age: {{ state.age }}</p> <button @click="increaseCount">Increase Count</button> </div> </template> <script setup> import { ref, reactive } from 'vue'; const message = 'Hello Vue 3'; // 响应式数据 const count = ref(0); // 响应式数据 const state = reactive({ name: 'John', age: 25, }); // 响应式对象 const increaseCount = () => { count.value++; }; // 响应式方法 </script> ``` 可以看到,使用`<script setup>`可以使代码更简洁和易读。 综上所述,Vue 3中可以同时使用`setup`函数和`<script setup>`语法糖来定义组件的行为,并且它们可以混用,根据个人喜好和项目需求选择使用方式。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值