Open Hiroshiba opened 1 year ago
@k-chop さんはモーダル周りでこのあたりに遭遇されたりとか、もしくは原因をご存知だったされませんか。。
(諦めるつもりですが、なぜダメなのかわからずにもやもやしています 😇 )
最初pushStateでどうにかしようとしていたときに遭遇した覚えがあります!!
Gatsby(で使ってるreach/router)がpushState/popStateを使って遷移を実現しているので、 それらと競合するから用意されてるnavigateを使わないとだめなんだろうな、という理解でした。
手元でコメントアウト部分有効にしたりして試してみましたが、 navigate使ってもヘッダーがフラッシュしないようになっていればよさそう?なのでそっちを見てみます
EDIT: ヘッダーフラッシュは抑制できました https://github.com/VOICEVOX/voicevox_blog/issues/125#issuecomment-1399166413 でもアニメーションがほぼ死んでしまう・・・
色々お試しありがとうございます!!
コメント先のリンクの通り、たしかにgatsby-plugin-transition-link
でできそうな雰囲気がありますね!!
(もうメンテされてなさそうですが。。。)
ちょっとやる気になったらやってみようかなと思います! (もし興味があったら挑戦してみて頂いてももちろんOKです!自分でやるときは自分をassingしてお知らせする感じで!)
https://user-images.githubusercontent.com/241973/213908147-73da3aca-1fec-4c68-8bc2-605918f5ac35.mp4
今日framer motionを使って実現できるか試していたんですが、こんな感じ↑になりました。 →参考情報
opacity: 0
になる瞬間があり、ちょっとフラッシュ感があるdiv.motion
のexit propsを書き換えたあとにページ遷移を発生させる必要があり雑に実装したという問題があるのですが、もし同じライブラリを使うなら参考にでもなれば...ということでコード差分を置いておきます 🙏 コード差分:https://github.com/VOICEVOX/voicevox_blog/compare/master...k-chop:voicevox_blog:issue124/use-page-transition?expand=1
おーー!!!面白いですね!!!
向きに関しては、やはりページ遷移する関係でreactのstateを持つことができず、left/rightをhistoryのstateに入れるしかないという感じでしょうか。 (以前はどのキャラが表示されるかをhistory stateに持たせて、そこからアニメーションの方向を決めていました。)
となると…contextや親コンポーネントに持たせれば良い…? いやidからkeyを求める処理を初回アクセス時だけにする…? いつコンポーネントやcontextが破棄・再作成されるかわからないので、試してみてって感じになりそうですね😇
ありがとうございます、勉強になります!!!
向きに関しては、やはりページ遷移する関係でreactのstateを持つことができず、left/rightをhistoryのstateに入れるしかないという感じ
ですです!ページ全体が再renderされてしまうので、history stateで渡すのが楽でした。contextも使えると思います!
context使う場合は一番外側で定義する必要がありそうです https://developers.altura.co.jp/posts/gatsby-global-context/
おおー、なるほどです。 Layout等でやると意図が伝わらないかもなので、GlobalComponentみたいなの噛ませてそこでuseContextすると良いかもですね!! そちらのサイトの方にはBrowserAPIのことも紹介されていました。VOICEVOX blogはSSRではないはずなので不要かもですが、導入しても良いかもですね!
現状デプロイされてるの見たのですが、特に問題なくブラウザバックできてますね! 開発環境のみの謎挙動なんでしょうか・・・
@k-chop 確認してみた感じ、1回だけ進んで戻ると駄目な感じでした・・・ 😇
https://user-images.githubusercontent.com/4987327/218291025-fa48d9da-8a50-4376-a68a-1e20960cb8e3.mp4
oh... ほんとですね... 404にはならないけど挙動が変だ
優先度低で急ぎではなさそうなので https://github.com/VOICEVOX/voicevox_blog/issues/124#issuecomment-1399446087 & https://github.com/VOICEVOX/voicevox_blog/issues/124#issuecomment-1399504327 の方向性でこちらで着手してみようと思います。 問題なさそうならassignしていただければ 🙏 (self-assignできなかった)
おおお!!とても助かります、ぜひお願いしたいです!!! assignさせて頂きます!!
不具合の内容
普通のサイトだと、history.pushStateを使った後に
popstate
イベントをlistenすると、ブラウザが持つブラウザバックをしてもページが更新されないはず。 でもなぜか更新されてしまう。 gatsbyが原因だと思うけどわからない・・・。絡み。
再現手順
npm run developで起動中に/product/zundamonなどに移動して、キャラ移動を2回行ったあと、ブラウザバックするとなぞの404ページに飛ばされる。 リロードすると正しく表示される。
期待動作
少なくとも404ページにならない。
その他
原因が全くわからずにいます。 たぶんhistory.pushStateを使うべきではないという思想なのかもしれないけど、ページのフラッシュが入っちゃうので使わざるをえない・・・。 そもそもページのフラッシュが入る方の原因を探るべきかも。