質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.31%
Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

Vuex

Vuexは、Vue.js アプリケーションのための状態管理ライブラリです。アプリケーション内で使用するコンポーネントのための集中データストアを提供。コンポーネント同士でデータをやり取りし、処理のフローを一貫させたり、データの見通しを良くすることができます。

Q&A

解決済

2回答

4285閲覧

vue.jsのcreated

yonchome

総合スコア41

Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

Vuex

Vuexは、Vue.js アプリケーションのための状態管理ライブラリです。アプリケーション内で使用するコンポーネントのための集中データストアを提供。コンポーネント同士でデータをやり取りし、処理のフローを一貫させたり、データの見通しを良くすることができます。

0グッド

0クリップ

投稿2019/07/24 16:40

vue.jsで用いるcreated()ですが、同一コンポーネントに2つ記入すると問題が発生しますか?
例えば以下のようにです。2つ目のcreated()を消すと1つ目のcreated()は問題なく動きます。
問題が発生している箇所が2つ目の内容自体に問題があるのか、
それとも同じコンポーネントに2度created()を2度書くという書き方そのものが間違っているのか切り分けたく、ご相談しました。

created () { this.cartitem = this.$store.state.cartitem }, created(){ firebase.auth().onAuthStateChanged(user => { if(user){ this.setLoginUser(user) if(this.$router.currentRoute.name === 'shop_item_cart') this.$router.push({name: stripe }) }else{ this.$router.push({name:'home'}) } }) },

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

Vue.jsのライフサイクルフック(createdなど)は、複数の方法で、複数個の設定が可能です。

  1. コンポーネントのオブションに設定する
  2. mixinを利用する
  3. イベントを設定する

1. コンポーネントのオブションに設定する

公式サイトのAPIにも説明のある一般的なやりかたです。

オプション自体には、一度しか設定できませんが、基本的にはこれだけでいいと思います。

tmykndrさんのおっしゃっているように、created()の中で複数の処理を書けますので、処理が長くなりそうであれば、処理の区切りに応じてメソッドを呼び出すのがいいと思います。

JavaScript

1new Vue({ 2 created () { 3 this.myMethod1() 4 this.myMethod2() 5 }, 6 methods: { 7 myMethod1 () { 8 console.log('myMethod1が呼ばれました。') 9 }, 10 myMethod2 () { 11 console.log('myMethod2が呼ばれました。') 12 } 13 } 14}) 15 16// 実行結果は、以下の通りです。 17// myMethod1が呼ばれました。 18// myMethod2が呼ばれました。

2. mixinを利用する

もし、複数のコンポーネントについて、createdのタイミングで共通の処理をしたい場合に有用です。
mixinsオブションを使って、別のオプションを混ぜ込むことができます。

mixinについては、公式サイトのガイドAPIを確認してみてください。

JavaScript

1const mixin1 = { 2 created () { 3 console.log('mixin1のcreatedが呼ばれました。') 4 } 5} 6 7const mixin2 = { 8 created () { 9 console.log('mixin2のcreatedが呼ばれました。') 10 } 11} 12 13new Vue({ 14 mixins: [ 15 mixin1, 16 mixin2 17 ], 18 created () { 19 console.log('元々のcreated()が呼ばれました。') 20 } 21}) 22 23// 実行結果は、以下の通りです。 24// mixin1のcreatedが呼ばれました。 25// mixin2のcreatedが呼ばれました。 26// 元々のcreated()が呼ばれました。

3. イベントを設定する

公式ドキュメントに記載がないので無視してかまいませんが、イベントでも設定可能です。
イベントの名前をhook:ライフサイクル名として設定するとオプションで設定した関数のあとに呼び出されます。

特定の条件下でライフサイクルフックを有効にしたりなどで使えると思いますが、created()のなかでifで分岐するなどすればいいので、よほど高度なことをしない限りは不要です。

JavaScript

1new Vue({ 2 beforeCreate () { 3 // 念のため、$onceは$onの1回きりバージョンです 4 this.$once('hook:created', function () { 5 console.log('createdイベントが発生しました。') 6 }) 7 }, 8 created () { 9 console.log('元々のcreated()が呼ばれました。') 10 } 11}) 12 13// 実行結果は、以下の通りです。 14// 元々のcreated()が呼ばれました。 15// createdイベントが発生しました。

各ライフサイクルの関数の呼び出しの順番をまとめると、原則以下の通りです。

  1. mixinに設定したもの(混ぜ込んだ順番の通り)
  2. コンポーネントのオプションに設定したもの
  3. イベントに設定したもの

最後に、動作するサンプルコードはこちらです。
左上の方にある「Run」ボタンを押して、console.log()の出力をブラウザのデベロッパーツールで確認してみてください。

投稿2019/07/26 04:21

編集2019/07/26 04:32
NozomuIkuta

総合スコア1260

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yonchome

2019/07/27 03:43

ご丁寧に説明ありがとうございます!
NozomuIkuta

2019/07/27 04:56

参考になったようでよかったです
guest

0

createdはコンポーネントのライフサイクルフックとして1度しか設定できないかと思います。

投稿2019/07/25 00:20

tmykndr

総合スコア74

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yonchome

2019/07/25 09:15

コメントありがとうございます。 こういう場合は、別のコンポーネントをつくる必要があるのですか? それともcreated()に複数の処理を記載する方法があるのでしょうか?
tmykndr

2019/07/25 13:53

created内で複数のmethodを呼べます。また、createdに複数の処理を直接書くこともできます。 実行したい処理が、複数呼ぶことがある場合はmethodを作成して、一度しか呼ばないのであればcreatedに直接書いて良いかと思います。
yonchome

2019/07/25 14:54

ありがとうございます。 ということはこの場合、二つ目のcreated()を消せば動くということでしょうか?
tmykndr

2019/07/25 15:48 編集

こちらで動作確認は行えませんが、コードが正しければ動きます。質問者さんが既に以下のように確認済みなので、問題ないかと思います。 >2つ目のcreated()を消すと1つ目のcreated()は問題なく動きます。
yonchome

2019/07/27 03:43

ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.31%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問