1. セットアップ組み合わせAPI:
1. セットアップ関数の最初のパラメータ - props エクスポートデフォルト{ 小道具: { タイトル: 文字列 }, セットアップ(プロパティ) { コンソールログ(props.title) } } ただし、 'vue' から { toRefs } をインポートします セットアップ(プロパティ) { const { title } = toRefs(props) console.log(タイトル.値) } 2. 文脈
xport デフォルト { セットアップ(プロパティ、コンテキスト) { // 属性(非応答オブジェクト) コンソールログ(コンテキスト属性) // スロット(非応答オブジェクト) コンソールログ(コンテキストスロット) // トリガーイベント(メソッド) コンソールログ(コンテキスト出力) } }
エクスポートデフォルト{ セットアップ(props、{attrs、slots、emit}) { ... } } 2. セットアップ関数の戻り値1. セットアップ関数の戻り値 - オブジェクト
<テンプレート> <!-- テンプレート内で使用すると自動的に解凍されるため、.value は必要ありません --> <div>{{ 読者数 }} {{ book.title }}</div> </テンプレート> <スクリプト> 'vue' から { ref, reactive } をインポートします エクスポートデフォルト{ 設定() { const 読者数 = ref(0) const book = reactive({ title: 'Vue 3 ガイド' }) // テンプレートに公開する 戻る { 読者数、 本 } } } </スクリプト> 注意:セットアップから返された参照は、テンプレート内でアクセスされると自動的にラップ解除されるため、テンプレート内で .value を使用しないでください。 3. レスポンシブシステムAPI1. 反応的
const obj = リアクティブ({ カウント: 0 }) レスポンシブ変換は「深い」ものであり、オブジェクト内のすべてのネストされたプロパティに影響します。 ES2015 プロキシ実装に基づくと、返されるプロキシ オブジェクトは元のオブジェクトと等しくありません。プロキシ オブジェクトのみを使用し、元のオブジェクトに依存しないようにすることをお勧めします。 <テンプレート> <div id="app">{state.count }</div> </テンプレート> <スクリプト> 'vue' から { reactive } をインポートします エクスポートデフォルト{ 設定() { // 状態はリアクティブ状態になりました const state = reactive({ カウント: 0, }) } } </スクリプト> 2. 参照値を受け入れ、応答性の高い変更可能な 定数カウント = ref(0) console.log(count.value) // 0 カウント値++ console.log(count.value) // 1 渡された テンプレート内のアクセス: <テンプレート> <div>{{ カウント }}</div> </テンプレート> <スクリプト> エクスポートデフォルト{ 設定() { 戻る { カウント: ref(0), } }, } </スクリプト> レスポンシブ オブジェクトのプロパティとしてアクセスします。 ref が 定数カウント = ref(0) 定数状態 = リアクティブ({ カウント、 }) console.log(状態.count) // 0 状態数 = 1 console.log(count.value) // 1 注意:既存の 定数otherCount = ref(2) 状態.count = その他のカウント console.log(状態.count) // 2 console.log(count.value) // 1 注意: 定数 arr = リアクティブ([ref(0)]) // ここで .value が必要です コンソール.log(arr[0].値) const map = reactive(新しい Map([['foo', ref(0)]])) // ここで .value が必要です console.log(map.get('foo').value) 型定義: インターフェースRef<T> { 値: T } 関数 ref<T>(値: T): Ref<T> 場合によっては、 const foo = ref<string | number>('foo') // foo の型: Ref<string | number> foo.value = 123 // 合格! 3. 計算されたレスポンシブ (1) 定数カウント = ref(1) const plusOne = 計算された(() => count.value + 1) console.log(plusOne.value) // 2 plusOne.value++ // エラー! (2) 定数カウント = ref(1) const plusOne = 計算された({ 取得: () => count.value + 1, 設定: (値) => { カウント値 = val - 1 }, }) plusOne.値 = 1 console.log(count.value) // 0 型定義: // 読み取り専用関数 computed<T>(getter: () => T): Readonly<Ref<Readonly<T>>> // 変更可能な関数 computed<T>(options: { 取得: () => T 設定: (値: T) => void }): 参照<T> 4. 読み取り専用オブジェクト (レスポンシブまたは通常) または const オリジナル = リアクティブ({ カウント: 0 }) const コピー = 読み取り専用(オリジナル) ウォッチエフェクト(() => { // 依存関係の追跡 console.log(copy.count) }) // オリジナルを変更すると、コピー元のリスナーがトリガーされます。original.count++ // コピーを変更できないため警告が表示されます copy.count++ // 警告! 5. ウォッチエフェクト渡された関数を直ちに実行し、その依存関係をリアクティブに追跡し、依存関係が変更された場合は関数を再実行します。 定数カウント = ref(0) watchEffect(() => console.log(count.value)) //-> 0 を出力 タイムアウトを設定する(() => { カウント値++ //-> 1 を出力 }, 100) 5.1 聞くのをやめるコンポーネントの 場合によっては、戻り値を明示的に呼び出してリスニングを停止することもできます。 const stop = watchEffect(() => { /* ... */ }) // その後stop() 5.2 副作用の解消場合によっては、副作用関数が非同期の副作用を実行し、それが無効な場合 (つまり、完了する前に状態が変わった場合) にクリーンアップする必要があることがあります。したがって、リスニング副作用によって渡される関数は、クリーンアップが失敗したときにコールバックを登録するための入力パラメータとして
ウォッチエフェクト((onInvalidate) => { const トークン = performAsyncOperation(id.value) onInvalidate(() => { // ID が変更されるか、リスニングを停止した場合 // 前の非同期操作をキャンセルします token.cancel() }) }) 無効化コールバックをコールバックから返すのではなく関数を渡して登録する理由は ( データ要求を実行する場合、副作用関数は多くの場合非同期関数になります。 定数データ = ref(null) watchEffect(非同期() => { data.value = fetchData(props.id) を待機します }) 非同期関数は暗黙的に 5.3 副作用リフレッシュタイミング
<テンプレート> <div>{{ カウント }}</div> </テンプレート> <スクリプト> エクスポートデフォルト{ 設定() { 定数カウント = ref(0) ウォッチエフェクト(() => { console.log(カウント.値) }) 戻る { カウント、 } }, } </スクリプト> この例では、 注意:初期化実行はコンポーネント マウント時(() => { ウォッチエフェクト(() => { // ここでDOMまたはテンプレート参照にアクセスできます }) }) 副作用を同期的に再実行する必要がある場合、またはコンポーネントが更新される前に、フラッシュ プロパティを持つオブジェクトをオプションとして渡すことができます (デフォルトは ' // watchEffectを同期的に実行する( () => { /* ... */ }, { フラッシュ: 'sync'、 } ) // watchEffect を実行する( () => { /* ... */ }, { フラッシュ: 'pre'、 } ) 5.4 リスナーのデバッグ
両方のコールバックは、依存関係に関する情報を含むデバッガー イベントを受け取ります。依存関係をチェックするには、次のコールバックにデバッガー ステートメントを記述することをお勧めします。 ウォッチエフェクト( () => { /* 副作用 */ }, { onTrigger(e) { デバッガ }, } )
型定義: 関数watchEffect( 効果: (onInvalidate: InvalidateCbRegistrator) => void、 オプション?: WatchEffectOptions ): ストップハンドル インターフェース WatchEffectOptions { フラッシュ?: 'pre' | 'post' | 'sync' onTrack?: (イベント: DebuggerEvent) => void onTrigger?: (イベント: DebuggerEvent) => void } インターフェース DebuggerEvent { 効果: ReactiveEffect 対象: 任意 タイプ: 操作タイプ キー: 文字列 | シンボル | 未定義 } 型 InvalidateCbRegistrator = (invalidate: () => void) => void タイプ StopHandle = () => void 6. 見る
// ゲッターをリッスンする 定数状態 = リアクティブ({ カウント: 0 }) 時計( () => 状態.count、 (カウント、前のカウント) => { /* ... */ } ) // refを直接聞く 定数カウント = ref(0) ウォッチ(カウント、(カウント、前のカウント) => { /* ... */ }) 6.1 複数のデータソースのリスニング
ウォッチ([fooRef, barRef], ([foo, bar], [prevFoo, prevBar]) => { /* ... */ }) 6.2 watchEffectと共有される動作
型定義: // 単一のデータソースをリッスンする function watch<T>( ソース: WatcherSource<T>、 折り返し電話: 値: T、 古い値: T、 onInvalidate: InvalidateCbRegistrator ) => 無効、 オプション?: WatchOptions ): ストップハンドル // 複数のデータソースを監視する function watch<T extends WatcherSource<unknown>[]>( 出典: T 折り返し電話: 値: MapSources<T>、 古い値: MapSources<T>、 onInvalidate: InvalidateCbRegistrator ) => 無効、 オプション? : WatchOptions ): ストップハンドル WatcherSource<T> = Ref<T> | (() => T) 型 タイプ MapSources<T> = { [K in keyof T]: T[K]はWatcherSource<infer V>を拡張しますか? V: なし } // 共通プロパティについては、`watchEffect` の型定義を参照してください。インターフェース WatchOptions extends WatchEffectOptions { 即時?: ブール値 // デフォルト: false 深い?: ブール値 } これで、vue3 ドキュメント編成のクイックスタートに関するこの記事は終了です。vue3 ドキュメント編成に関するより関連性の高いコンテンツについては、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: Nginxはhttpとhttpsの両方のアクセスをサポートするために同じドメイン名を設定します
>>: MySQL InnoDBストレージエンジンについて簡単に説明します
序文最近、私は小さな個人ブログ プロジェクトを書くのに忙しくしています。 「グローバル検索」機能を実...
具体的なコードは次のとおりです。 <div id="ボックス"> &...
導入HibernateやMyBatisなどのORMフレームワークでは、部門に関連付けられたユーザーオ...
この記事は主に、以前のインストール方法を使用して MySQL 5.7.14 をインストールするときに...
目次Docker デプロイメント Always on クラスターDockerをインストールする建築関...
xhtml+css のウェブサイト再構築、ウェブ標準などについては、記事が多すぎるので繰り返しません...
目次1. はじめに2. 製品テーブルを準備する2.1 ステートメントの順序2.2 大文字と小文字の区...
元のコード: center.html : <!DOCTYPE html> <htm...
目次1. ダウンロード2. 展開3. Nginxログ関連の設定4. ファイルダウンローダーとして n...
目次ハッシュと履歴の違いハッシュ履歴getCurrentLocation の実装setupListe...
この記事では、参考までにMySQL 8.0に接続できないJavaの問題をまとめて紹介します。具体的な...
主キーを作成するには 2 つの方法があります。 テーブルテーブル名を作成( フィールド名タイプ、 フ...
DIV フローティング効果 (固定位置) は CSS のみで実装されており、IE8、360、Fir...
Centos7 バージョンをインストールするときに、外部ネットワークへの接続を選択すると、外部ネット...
MySQLインストーラをダウンロードする公式ダウンロードアドレス: http://dev.mysq...