【Vue3】createdとは?使い方を紹介する
vuejsのcreatedとは
created
はvue
インスタンスが作られたすぐ後に呼び出されます。
この記事を書いた人
@takasqr アプリケーション開発が大好きなエンジニア。Vue、Swift、Electrom などでアプリを作って公開している。AWS や Firebase などのクラウドサービスも好き。
createdの使い方
Option APIでのcreated
Option API
でコンポーネントを作っていく時はcreated
の中に書きます。
<script>
export default {
created: function () {
console.log('created!')
}
}
</script>
Composition APIでのcreated
Composition API
ではcreated
オプションはなくなっています。Composition API
でcreated
に相当する処理を作っていく時はsetup
の中に書きます。
<script>
export default {
setup() {
console.log('created!')
}
}
</script>
ライフサイクルフック | Composition API | Vue.js
createdの中でmethodを呼び出す
createdの中でmethodを呼び出すことも出来ます。
<script>
export default {
created: function () {
console.log('created!')
this.myMethod()
},
methods: {
myMethod() {
console.log('myMethod start!')
}
}
}
</script>
createdとmountedの違い
createdとmountedの違いは、createdが先に呼び出されて、mountedが後に呼び出されます。
createdで操作できるもの
- data
- computed
- properties
- methods
- watch
createdで操作できないもの
- $el
$el
を操作できないのは、created
の時点ではDOMの描画が終わってないからです。
async/awaitなcreated
async/await
をcreated
で使って、非同期処理を同期的に書きたい時があるかも知れません。
そんな時の書き方を紹介します。
まずは非同期のままのコードです。
<script>
export default {
created: function () {
const timer = function(step, time) {
return new Promise(resolve => {
setTimeout(() => {
console.log("step " + step)
resolve()
}, time)
})
}
timer(1, 3000)
timer(2, 1000)
}
}
</script>
結果は下のようになるはずです。
step 2
step 1
後から実行した、timer(2, 1000)
の方が時間が短いので先にコンソールに出力されます。
今度はasync/await
を使って書きます。
<script>
export default {
created: async function () {
const timer = function(step, time) {
return new Promise(resolve => {
setTimeout(() => {
console.log("step " + step)
resolve()
}, time)
})
}
await timer(1, 3000)
await timer(2, 1000)
}
}
</script>
結果は下のようになるはずです。
step 1
step 2
async/await
が効いて、await timer(1, 3000)
の後にawait timer(2, 1000)
されています。