Vue インスタンスオプション
Vue のオプションは、Options API を使用するときに Vue インスタンスで利用できるさまざまなオプションです。
Vue インスタンスの一般的なオプション:
-
el- Vue インスタンスがマウントされる DOM 要素を指定します。指定しない場合、Vue インスタンスは自動的にマウントされません。
-
data- Vue インスタンスのデータオブジェクトを定義します。Vue インスタンスのテンプレート、算出プロパティ、メソッド、ウォッチャーなどはすべてこのデータにアクセスできます。
-
computed- 算出プロパティを含みます。これらのプロパティの値は依存関係に基づいてキャッシュされ、依存関係が変化したときだけ再計算されます。
-
methods- Vue インスタンスのメソッドを定義します。テンプレート内のイベントリスナーから呼び出すことができます。
-
watch- 1つ以上のウォッチャーを含み、Vue インスタンス内のデータ変更を監視して応答します。
-
props- コンポーネントが受け取る外部データを定義します。
-
components- Vue インスタンス内でカスタムコンポーネントを登録できます。
-
directives- グローバルなカスタムディレクティブの登録を許可します。
-
filters- フィルターを定義します。テンプレート内で使用でき、テキストの書式設定に使用します。
-
model- コンポーネントが使用するカスタム v-model プロパティとイベントを指定します。
-
provide/inject- 依存関係の注入機能を提供し、コンポーネント間でのデータ受け渡しを可能にします。
-
lifecycle hooks- 含む
onMounted,onUpdated,onUnmountedなどのライフサイクルフック。Vue インスタンスのさまざまな段階でコードを実行するために使用します。 -
template- Vue インスタンスの HTML テンプレートを定義します。
-
render function- JavaScript 関数を使用してコンポーネントをレンダリングでき、より高度なカスタマイズ機能を提供します。
-
errorCaptured- Vue インスタンスのエラーをグローバルにキャッチするために使用します。
-
emits- コンポーネントがトリガーできるイベントを定義します。
-
setup- Vue 3 の Composition API におけるエントリ関数で、コンポーネントのロジックを整理するために使用します。
el
マウントポイント。Vue インスタンスがマウントされる DOM 要素を指定します:
例
// options
});
app.mount('#app');
data
-
型: 関数またはオブジェクト
-
説明:
dataVue インスタンス内でコンポーネントデータを格納する場所です。`data` 内でdataさまざまなデータプロパティを定義し、テンプレート構文を使用してページ上で利用できます。data`data` 内のデータはリアクティブに更新されます。つまり、データが変化すると、関連するページコンテンツが自動的に更新されます。
例
data() {
return {
message: 'Hello Vue!'
};
}
});
computed
-
型: オブジェクト
-
説明:
computedプロパティを使用すると、リアクティブな依存関係に基づく算出プロパティを宣言できます。算出プロパティは、関連する依存関係が変更された場合にのみ再評価され、計算結果をキャッシュして不要な再計算を避けます。
例
data() {
return {
firstName: 'John',
lastName: 'Doe'
};
},
computed: {
fullName() {
return `${this.firstName} ${this.lastName}`;
}
}
});
methods
-
型: オブジェクト
-
説明:
methodsプロパティは Vue インスタンス内のメソッドを格納するために使用します。これらのメソッドはテンプレート内で呼び出せるほか、インスタンスの他のメソッド内でも使用できます。算出プロパティとは異なり、メソッドは呼び出しのたびに再実行されるため、イベントへの応答や非同期操作の実行に適しています。
例
data() {
return {
count: 0
};
},
methods: {
increment() {
this.count++;
}
}
});
watch
-
型: オブジェクトまたは関数
-
説明:
watchプロパティは、Vue インスタンス内のデータ変更を監視して応答するために使用します。監視しているデータが変化すると、指定したコールバック関数が実行されます。非同期処理や複雑なデータ変更ロジックに適しています。
例
data() {
return {
message: 'Hello Vue!'
};
},
watch: {
message(newValue, oldValue) {
console.log(`Message changed from ${oldValue} to ${newValue}`);
}
}
});
props
-
型: 配列またはオブジェクト
-
説明:
propsプロパティは、親コンポーネントから子コンポーネントに渡されるデータを受け取るために使用します。子コンポーネントはprops親コンポーネントから渡されたデータを受け取り、コンポーネント内で使用できます。
次の例では、MyComponent が title プロパティを受け取り、テンプレート内でそれを使用します:
例
props: ['title'],
template: '<h1>{{ title }}</h1>'
};
const app = Vue.createApp({
components: {
'my-component': MyComponent
},
template: '<my-component title="Hello Vue 3!"></my-component>'
});
app.mount('#app');
template
-
型: 文字列
-
説明:
templateプロパティは Vue コンポーネントのテンプレート構造を定義します。テンプレート内では、補間、ディレクティブ、算出プロパティなどの Vue のテンプレート構文を使用できます。テンプレートは最終的にレンダリング関数にコンパイルされ、コンポーネントの仮想 DOM を生成するために使用されます。
例
data() {
return {
message: 'Hello Vue!'
};
},
template: '<div>{{ message }}</div>'
});
components
components はローカルコンポーネントを登録するために使用します。
例
template: '<div>A child component</div>'
};
const app = Vue.createApp({
components: {
'child-component': ChildComponent
},
template: '<child-component></child-component>'
}).mount('#app');
provide / inject
親コンポーネントがデータを提供し、子コンポーネントが注入して使用します。
例
inject: ['message'],
template: '<div>{{ message }}</div>'
};
const app = Vue.createApp({
provide() {
return {
message: 'Provided Message'
};
},
components: {
'child-component': ChildComponent
},
template: '<child-component></child-component>'
}).mount('#app');
ライフサイクルフック
beforeCreate
インスタンスの初期化前に呼び出されます。
例
beforeCreate() {
console.log('beforeCreate');
}
}).mount('#app');
created
インスタンスの作成が完了した後に呼び出されます。
例
created() {
console.log('created');
}
}).mount('#app');
beforeMount
マウント前に呼び出されます。
例
beforeMount() {
console.log('beforeMount');
}
}).mount('#app');
mounted
インスタンスのマウントが完了した後に呼び出されます。
例
mounted() {
console.log('mounted');
}
}).mount('#app');
beforeUpdate
データの更新前に呼び出されます。
例
data() {
return {
message: 'Hello'
};
},
beforeUpdate() {
console.log('beforeUpdate');
}
}).mount('#app');
updated
データの更新後に呼び出されます。
例
data() {
return {
message: 'Hello'
};
},
updated() {
console.log('updated');
}
}).mount('#app');
beforeUnmount
インスタンスのアンマウント前に呼び出されます。
例
beforeUnmount() {
console.log('beforeUnmount');
}
}).mount('#app');
unmounted
インスタンスのアンマウント後に呼び出されます。
例
unmounted() {
console.log('unmounted');
}
}).mount('#app');
その他のオプション
directives
ローカルディレクティブを登録します。
例
directives: {
focus: {
mounted(el) {
el.focus();
}
}
},
template: '<input v-focus>'
}).mount('#app');
mixins
ミックスインオブジェクト。
例
created() {
console.log('Mixin created');
}
};
const app = Vue.createApp({
mixins: [myMixin],
created() {
console.log('Component created');
}
}).mount('#app');
extends
別のコンポーネントを拡張します。
例
created() {
console.log('BaseComponent created');
}
};
const app = Vue.createApp({
extends: BaseComponent,
created() {
console.log('Extended component created');
}
}).mount('#app');
inheritAttrs
親コンポーネントの attribute を継承するかどうか。
例
inheritAttrs: false,
props: ['title'],
template: '<div><h1>{{ title }}</h1></div>'
};
const app = Vue.createApp({
components: {
'my-component': MyComponent
},
template: '<my-component title="Hello" id="app"></my-component>'
}).mount('#app');
setup
Composition API に使用します。
例
setup() {
const message = Vue.ref('Hello Vue 3!');
return { message };
},
template: '<h1>{{ message }}</h1>'
}).mount('#app');
expose
Vue 3 の Composition API では、setup 関数を使用してコンポーネントのロジックを定義するとき、expose メソッドを使用して外部に公開するプロパティとメソッドを明示的に指定できます。
以下は、expose を使用して Vue 3 コンポーネントでプロパティとメソッドを公開する方法を示す簡単な例です:
親コンポーネント (ParentComponent.vue)
<div>
<child-component ref="child"></child-component>
<button @click="callChildMethod">Call Child Method</button>
</div>
</template>
<script>
import { ref } from 'vue';
import ChildComponent from './ChildComponent.vue';
export default {
components: {
ChildComponent
},
setup() {
const child = ref(null);
const callChildMethod = () => {
if (child.value) {
child.value.exposedMethod();
}
};
return {
child,
callChildMethod
};
}
};
</script>
子コンポーネント (ChildComponent.vue)
<div>
<p>{{ exposedData }}</p>
</div>
</template>
<script>
import { ref } from 'vue';
export default {
setup(_, { expose }) {
const exposedData = ref('Hello from Child Component');
const exposedMethod = () => {
console.log('Child component method called');
};
expose({
exposedData,
exposedMethod
});
return {
exposedData
};
}
};
</script>
説明:
親コンポーネント:
- 親コンポーネントでは、`ref` を使用して
ref子コンポーネントへの参照を作成しています。child。 - に
callChildMethodメソッド内では、`ref` を通じてchild.value子コンポーネントのインスタンスにアクセスし、子コンポーネントが公開したメソッドを呼び出します。exposedMethod。
- 親コンポーネントでは、`ref` を使用して
子コンポーネント:
- 子コンポーネントの
setup関数内で、`ref` を使用してrefリアクティブなデータを作成し、exposedData。 - メソッドを定義し、
exposedMethodメソッドの公開方法を示します。 - `expose` メソッドを使用して
expose明示的に公開し、exposedDataとexposedMethod親コンポーネントに公開します。 - `message` を返し、
exposedDataテンプレート内で使用できるようにします。
- 子コンポーネントの