#author("2024-11-26T21:37:57+08:00","default:Admin","Admin")
#author("2024-11-27T08:56:57+08:00","default:Admin","Admin")
[[Vue3]]

&color(red){※前提条件:本文基于 Vue 3.0 创作};
#contents


* 概要 [#hbab2692]

Vue3中的一个新的配置项,值为一个函数

setup 是所有 Composition API(组件API)“表演的舞台”

组件中所用到的:数据、方法等等、均要配置在 setup中。简述:像xue2中所有的钩子,属性,方法都放在里面

#codeprettify{{
/* 则对象中的属性,方法可在模板上直接使用 */
export default {
  name: 'App',
  // 下面只是测试setup,暂时不考虑响应式的问题
  setup(){
    // 数据
    let name = '张三'
    // 方法
    function sayHello(){
      alert(`我叫${name},我${age}岁了,你好啊!`)
    }// 返回一个对象
    return{ name, sayHello,}
  \}\}
}}

* vue3中实现页面onload(onMounted)和onshow [#ff10a8c5]

watch监听页面路径变化,前后相同即为onshow

#codeprettify{{
import { ref, onMounted, watch } from 'vue';
import { useRoute } from 'vue-router';
 
export default {
  setup() {
    const route = useRoute();
    const id = ref('');
 
    // 在组件加载时获取初始参数
    onMounted(() => {
      id.value = route.params.id;
      console.log('Component is mounted with id:', id.value);
      // 执行其他加载逻辑
    });
 
    // 监听路由参数变化
    watch(() => route.params, (newParams, oldParams) => {
      if (newParams.id !== id.value) {
        id.value = newParams.id;
        console.log('Route parameter changed to:', id.value);
        // 执行相应的逻辑
      }
    });
 
    return {
      id
    };
  }
};
}}

* 注意点 [#hd295fbd]

- setup的执行时机:在beforeCreate 之前执行一次,this 是 undefined,但在setup里面的函数中,this指向setup里面的所有属性或方法
- setup 不能是一个 async函数:因为返回值不再是return的对象,而是promise,模板看不到return对象中的属性。(后期也可以返回一个Promise实例,但需要Suspense和异步组件的配合)

#hr();
コメント:
#comment_kcaptcha

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS