setup()関数とリアクティブな変数
setup()のエントリーポイント、プリミティブに使うref()、オブジェクトに使うreactive()、値の返却について学習します。
「setup()関数とリアクティブな変数」はCoddyKit上の無料Vue Academyレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはVue Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Vue Academyコースには全4レッスンが含まれています。
setup()のエントリーポイント
Composition APIは、setup()という特別なコンポーネントオプションの中で使用します。これはコンポーネントが作成される前に一度実行され、リアクティブな状態や関数を宣言する場所です。
setup()からreturnしたものは、テンプレートで利用できるようになります。
refでリアクティブな状態を作成する
ref()は、単一の値(数値、文字列、真偽値、さらにはオブジェクト)をリアクティブなコンテナでラップします。実際の値は.valueプロパティに格納されます。
import { ref } from 'vue'
export default {
setup() {
const count = ref(0)
console.log(count.value) // 0
return { count }
}
}reactiveでリアクティブなオブジェクトを作成する
reactive()は通常のオブジェクトを受け取り、深くリアクティブなプロキシを返します。プロパティには直接アクセスでき、.valueは必要ありません。
import { reactive } from 'vue'
export default {
setup() {
const user = reactive({ name: 'Alice', age: 30 })
console.log(user.name) // Alice
return { user }
}
}状態をテンプレートに返す
setup()からオブジェクトとして返したものはすべて、テンプレートのバインディングになります。ここではcountとuserの両方が公開されています。
export default {
setup() {
const count = ref(0)
const user = reactive({ name: 'Alice' })
return { count, user }
}
}テンプレートでの自動アンラップ
JavaScriptではcount.valueと記述しましたが、テンプレートではcountとだけ記述します。Vueがトップレベルのrefを自動的にアンラップするため、テンプレートで.valueと入力する必要はありません。
<!-- template -->
<p>Count: {{ count }}</p>
<p>Name: {{ user.name }}</p>関数を追加する
setup()で定義した関数は、リアクティブな状態を読み取ったり変更したりできます。JavaScriptの中では、refに対して引き続き.valueを使うことを忘れないでください。
import { ref } from 'vue'
export default {
setup() {
const count = ref(0)
function increment() { count.value++ }
return { count, increment }
}
}テンプレートで接続する
関数を返し、イベントにバインドします。ボタンをクリックするとincrementが呼び出されてrefが変更され、Vueが再レンダリングします。
<!-- template -->
<button @click="increment">Count is {{ count }}</button>thisキーワードは不要
setup()の中にthisはありません。宣言した変数を直接操作します。そのため、コードの動作を理解しやすく、TypeScriptとの相性も良くなります。
setup()でthisを使おうとしても、コンポーネントインスタンスは取得できません。
setupは作成前に実行される
setup()は非常に早い段階、つまりcreatedより前、そしてコンポーネントインスタンスの準備が完全に整う前に実行されます。そのためthisは利用できず、ここではまだDOMにもアクセスできません。
setupの引数:propsとcontext
setup(props, context)は、解決済みのpropsを第1引数として、contextオブジェクトを第2引数として受け取ります。contextにはattrs、slots、emit、exposeが用意されています。
export default {
props: { title: String },
setup(props, context) {
console.log(props.title)
context.emit('ready')
}
}完全なミニコンポーネント
ここまでの内容をすべてまとめた例です。ref、リアクティブなオブジェクト、関数、そして返されるバインディングが含まれています。
import { ref, reactive } from 'vue'
export default {
setup() {
const count = ref(0)
const user = reactive({ name: 'Alice' })
function increment() { count.value++ }
return { count, user, increment }
}
}理解度チェック
setup()とリアクティブ変数を理解できているか確認しましょう。
まとめ
Composition APIの基礎として、次のことを学びました。
setup()は作成前に一度実行され、テンプレートのバインディングを返します。ref()は値をラップします。JSでは.valueを使います。reactive()はオブジェクトをラップします。プロパティには直接アクセスします。- テンプレートではrefが自動的にアンラップされるため、
.valueを省略できます。 setup()の中にthisはありません。
よくある質問
「setup()関数とリアクティブな変数」レッスンは無料ですか?
はい。「setup()関数とリアクティブな変数」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Vue Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Vue Academyコースには全4レッスンが含まれています。
「setup()関数とリアクティブな変数」で何を学びますか?
setup()のエントリーポイント、プリミティブに使うref()、オブジェクトに使うreactive()、値の返却について学習します。 ブラウザで直接実行するハンズオンコードでVue Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Vue Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのVue Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。
「setup()関数とリアクティブな変数」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このVue Academyレッスンでコードを書いて実行できますか?
はい。すべてのVue Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- Composition APIを使う理由
- setup()関数とリアクティブな変数
- refとreactive:使い分け
- Composition APIのComputedとWatch