-
Notifications
You must be signed in to change notification settings - Fork 298
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
onMountedかonActivatedのどちらかが呼ばれた時に実行されるコンポーザブルを定義 #1890
The head ref may contain hidden characters: "onMounted\u304BonActivated\u306E\u3069\u3061\u3089\u304B\u304C\u547C\u3070\u308C\u305F\u6642\u306B\u5B9F\u884C\u3055\u308C\u308B\u30B3\u30F3\u30DD\u30FC\u30B6\u30D6\u30EB\u3092\u5B9A\u7FA9"
onMountedかonActivatedのどちらかが呼ばれた時に実行されるコンポーザブルを定義 #1890
Conversation
@sigprogramming これで良さそうか、 #1888 のが良さそうか、ちょっとレビューいただけると・・・ 🙇 |
あまり良くないかもですが、 <div v-if="songEditorIsOpen">
<slot></slot>
</div> をコンポーネント化して、 <IfSongEditorIsOpen>
<SequencerPitch v-if="showPitch" />
</IfSongEditorIsOpen> のようにするという手もあるかも…? |
@sigprogramming DOM等を取ってきてみて、ダメっぽかったら次の機会にリトライする、みたいなコードもできるかもです。 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@sigprogramming
すみません! 問題直ったと思うので見てもらっても良いでしょうか 🙇 🙇 🙇
(あんま興味なかったら遠慮なくおっしゃってください。。。 🙇 )
構造は前回コメントいただいたときから変わってないです。
いろいろ試したけど戻ってきた感じです。
onMounted時にDOMがなくてエラーになってると思ってたのですが、DOMはあるけどcanvasWidthが0になってたのが問題だったのでそこ変えただけです!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
なかなかレビューも難しい分野だと思うので、えいやでマージしようかなと思っています!
コンポーネント表示をv-if
で制御し、かつコンポーネント内でonActivatedを使う場合、代わりにこっちを使わないとそこそこレアなケースで問題が起こるという感じです。
あと数日待って特にコメントなければマージしたいと思います 🙏
マージします・・・!! |
内容
KeepAliveとうまいこと向き合うプルリクエストです。
onActivatedが必要になってるのは、DOMを使った初期化コードを実行するためです。
なのにonMountedだけ呼ばれることがあるので困っていました。
ということで、初期化コードを実行するべきタイミングを保持しておいて、onMountedかonActivatedで最初に来た方で実行するコンポーザブルを定義してみました。
そもそもコンポーネントが始まる実行順序はこの3通りだけです。
これらのタイミングで1回だけ実行されればいいはず。
あとはonDeactivatedあるいはonUnmounedが呼ばれたらプラグをもう一度立てて再実行すればいいはず。
関連 Issue
resolve #1886
close #1888
その他
個人的には #1888 よりもこっちの方がいい気がしてます 😇