-
Notifications
You must be signed in to change notification settings - Fork 309
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
読み方&アクセント辞書ダイアログの右側パネルを別コンポーネントにする #2290
Conversation
リファクタリング本当にありがたいです!!! |
まだ作業中段階ではありますが、新規に編集部分のコンポーネントを作成しました。 ただ、今のところこの状態で動かすとUIなどの表示部分が動いていない模様で、その原因の追求と改善を行っていきたいと考えております。 |
この変数をコンポーザブルに渡す際、
というエラーが出ておりました。 |
読み込み中かどうかの判定には 今回の場合はコンポーザブルにするかどうかはどちらでも良いはずで、先にコンポーネントを切り出してあげた方がやりやすいかもです。 参考になれば!! |
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.
ちょっと見てみてました! これかなり難しいですね!!!
たぶんなのですが、コンポーザブルなしでリファクタリングを考えるほうがずっと単純になりそうな予感がしました。
コンポーザブルは「別々のコンポーネントで別々のインスタンスなどを作る」ためのものですが(再利用性が高い)、今欲しいのは「別々のコンポーネントで同じインスタンスを作る」(共有)なので、目的と少しずれてるかもです。
ちなみに共有する場合はContextをInject/Provideすると良い感じになることがあります。
https://ja.vuejs.org/guide/components/provide-inject
とりあえず一旦これはやらないで、一旦変数や関数をひたすら子コンポーネントに渡すのが良い気がします。
とりあえずの方針として、まずUI系だけをコンポーネントから切り出し、saveとかの操作用の関数は全部親から子に渡すのはどうでしょうか? 👀
ぱっと仕分けしてるので間違ってるかもですが、雰囲気こんな感じかなと
- 子コンポーネント側
- HTML構造全部
- 音声再生機構
- nowGenerating, nowPlaying, play, stopとか
- メニュー系
- surfaceInput, yomiInputとか
- アクセント系
- changeAccent
- 親コンポーネント側
- uiLock、createUILockAction
- wordEditing
- 状態変数とそのsetter
- surfaceとかsetSurfaceとか
accentType
の状態変数がなぜか無いので作ると良さそう
- 関数いろいろ
- saveWord, deleteWord, resetWordとか
- あとステートの移動用の関数とか
- 子コンポーネントに移動できるのもありそうだけど、不明
初めて知りました!inject/provide見てみます!
少し前のコミットの戻して対応してみます! |
参考になれば…! |
bd5eb97
to
61c97e1
Compare
ここで仕分けられている関数などは、仕分けられている親・子に移動or実装と言う形であっていますでしょうか? |
bab886c
to
53d2e0b
Compare
あ、そのニュアンスで書いていました! |
jdkfx#2 にて、いっぱいprovideしてるのを1つのオブジェクトにまとめつつ、かつそのobjectの型を定義して子コンポーネントからimportすることで、型が正しいことを保証するようにしてみました! 型が正しくなったので、間違った型のまま使っていた部分でいくつか型エラーが出てると思います! |
🚀 プレビュー用ページを作成しました 🚀 更新時点でのコミットハッシュ: |
@Hiroshiba |
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.
とても良い切り出しになっていますね!!!!!!!!
移動以外の差分がかなり抑えられていてとてもレビューしやすかったです・・・!!!
動作確認がまだなのですが、TODOのとこが問題なければほぼLGTMです!!
TODOの解決のために結構(30行以上くらい?)コードを足さないといけなそうなら、いったんマージしちゃってから変更でも良いと思います!
@Hiroshiba ※ボタンの色が違うのはホバーしてるだけです |
リセットボタンを赤くするかどうかですが、まあ確かに赤くしてもいいかなと思いました! ぶっちゃけこのボタンなくても良いんですよね、1回キャンセルして戻って来ればいい。 という状態の時に、キャンセルして戻ってくれば良いけどリセットするということは、気軽にリセットしたいということなので、まあ赤くしなくても良いかなぁと思ってました。 けどまあ間違えて押しちゃう人もいる気がするので、赤くしても良さそうだなぁと思いました。 |
僕も割とどっちでもいいかなと思っていたので、ヒホさんの考えにお任せします!
わかりました!お願いします! |
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.
LGTM!!!
変更がほぼ移動だけになっていてかなり良い切り出しだと感じました!!
(ちなみにgit diff -w --color-moved=dimmed-zebra --color-moved-ws=ignore-all-space main
などのコマンドを実行すれば、行ごと移動させたものを無視して変更した場所だけ確認できて便利です。)
ちなみにprovideではなく引数を大量に渡す手も全然アリなのですが、この形ならいくらでもコンポーネントを切り分けられるので、引数渡すより便利かもですねぇ。
ちょっとしばらく運用してメンテナンス性を様子見したみ。
あとはこっちの都合でいくつか微調整させていただいてマージしたいと思います!
なんとそんな神コマンドが... |
内容
関連 Issue
close #2234
スクリーンショット・動画など
その他
関連: #2237