ホームページ > ウェブフロントエンド > Vue.js > Vue3セットアップの注意点と監視監視属性とは何ですか?

Vue3セットアップの注意点と監視監視属性とは何ですか?

王林
リリース: 2023-05-14 15:31:06
転載
1080 人が閲覧しました

1、セットアップ手順

1.1セットアップの実行時間

1.セットアップの実行時間が以前よりも早くなります作成実行

Vue3セットアップの注意点と監視監視属性とは何ですか?

  export default {
    name: "Demo",
    beforeCreate(){
      console.log('beforeCreate已执行');
    },
    setup() {
      console.log('setup已执行');
      let person = reactive({
        name: "小明",
        age: 20,
      });
      return {
        person,
      };
    },
  };
ログイン後にコピー

1.2.steupparameters

setupparameters
1.props: 値は、コンポーネントの外部から渡され、コンポーネントによって内部的に受信されるプロパティを含むオブジェクトです。

2 context :Context object
①attrs: 値は、コンポーネントの外部から渡されるが、props 設定で宣言されていない属性を含むオブジェクトです。this.$attrs

  export default {
    name: "Demo",
    props:['msg','age'],
    setup(props) {
      console.log(props);
      let person = reactive({
        name: "小明",
        age: 20,
      });   
      return {
        person,
      };
    },
  };
ログイン後にコピー

に相当します。 Vue3セットアップの注意点と監視監視属性とは何ですか?

②slots: 受信したスロットの内容は this.$slots と同等です。

#アプリでスロットを定義します

<template v-slot:qwe>
<span>123</span>
</template>
<template v-slot:ewq>
<span>321</span>
</template>
ログイン後にコピー

サブコンポーネントでスロットを取得します

 console.log(context.slots); // 得到插槽
ログイン後にコピー

Vue3セットアップの注意点と監視監視属性とは何ですか?#③emit: カスタムイベントを配布する関数。

this.$emit

に相当します。

アプリでカスタム イベントを作成し、コンポーネントに渡します

<Demo @hi="Hello" msg="山鱼" age=10>
</Demo>
ログイン後にコピー
  setup() {
    function Hello(){
      console.log(&#39;你好!&#39;);
    }
    return {
      Hello
    }
  }
ログイン後にコピー

次に、サブコンポーネントに移動し、context.comit を使用してカスタム イベント

 function point(){
        context.emit(&#39;hi&#39;,666)
      }     
5TgxPT2v-1681788304084)]

```js
 function point(){
        context.emit(&#39;hi&#39;,666)
      }
ログイン後にコピー
Vue3セットアップの注意点と監視監視属性とは何ですか?Vue2 の計算された構成関数と一致しています

import { reactive,computed} from "vue";
  export default {
    name: "Demo",
    setup() {
      let person = reactive({
        firstName: "小",
        lastName: "明",
      }); 
      // 计算属性的简写形式,不考虑修改,是只读的
      /*person.fullName= computed(()=>{
        return person.firstName+&#39;-&#39;+person.lastName
      }) */
      // 计算属性的完整形式(可以读改)
      person.fullName= computed({
        get(){
          return person.firstName +&#39;-&#39;+person.lastName
        },
        set(value){
          const arr = value.split(&#39;-&#39;)
          person.firstName = arr[0]
          person.lastName = arr[1]
        }
      })
      return {
        person,
      };
    },
  };
ログイン後にコピー

2 番目に、モニタリング属性を監視します

監視には、単一属性データ監視と複数属性データ監視の 2 種類があります。

監視の 3 つのパラメータは、監視対象オブジェクト、監視対象関数、および監視対象属性の構成です。

ref で定義されたデータを監視

#①監視属性は ref

    watch(sum, (newvalue, oldvalue) => {
      console.log(&#39;当前值为&#39;+newvalue, &#39;以前值为&#39;+oldvalue);
    });
ログイン後にコピー

の応答値を監視します②ref

        watch([sum,msg], (newvalue, oldvalue) => {
      console.log(&#39;当前值为&#39;+newvalue, &#39;以前值为&#39;+oldvalue);
    });
ログイン後にコピー

で定義された複数の応答データを監視しますreactive

#で定義されたデータを監視します##①reactive で定義されたデータの変更を監視する

reactive で定義されたデータは watch

を使用して newValue を正しく取得できず、詳細な監視が強制的に開かれます

             watch(person,(newValue, oldValue) => {
                console.log(&#39;person变化了&#39;,newValue,oldValue)
             })
ログイン後にコピー

②reactive で定義された応答データの特定の属性を監視します
            watch(()=>person.name,(newValue,oldValue)=>{
               console.log(&#39;person.name发生了变化&#39;,newValue,oldValue)
           })
ログイン後にコピー
③reactive で定義された応答データの特定の属性を監視します

watch([()=>{person.age},()=>{person.name}],(newValue,oldValue)=>{
                console.log(&#39;person.name发生了变化&#39;,newValue,oldValue)
            })
ログイン後にコピー

④特別な状況

注: これは状況は、recative で定義されたオブジェクト内の特定の属性を監視するため、ディープで

#
 watch(()=>person.job,(newValue,oldValue)=>{
                console.log(&#39;person.name发生了变化&#39;,newValue,oldValue)
            }, {deep: true})
ログイン後にコピー
をオンにすることができます

以上がVue3セットアップの注意点と監視監視属性とは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:yisu.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート