今回のフロントエンド勉強会では、話題のルーティングライブラリ TanStack Router を取り上げました。
現在、弊社で開発中のプロダクトにおいて採用を検討しており、要件を満たせるかどうかの観点から調査を行いました。今回はその中でも、導入前に最低限押さえておきたいポイントに絞って、公式ドキュメントや関連リンクとともに紹介していきます。
続きを読む今回のフロントエンド勉強会では、話題のルーティングライブラリ TanStack Router を取り上げました。
現在、弊社で開発中のプロダクトにおいて採用を検討しており、要件を満たせるかどうかの観点から調査を行いました。今回はその中でも、導入前に最低限押さえておきたいポイントに絞って、公式ドキュメントや関連リンクとともに紹介していきます。
続きを読む<ViewTransition> コンポーネントが実験的にReactに追加された<ViewTransition> で子要素をラップすることで、それらの間の変化をアニメーション機能を提供する<ViewTransition> を使う場合、Reactのコンポーネントを切り替えても内部のDOMノードが自動的に同じ view-transition-name を持つ場合、アニメーションが適用される(defaultでname=”auto”が割り当てられる)react@experimental をinstall
npm install react@experimental
現時点で実験的な機能なため unstable_ViewTransition としてimportする
import { unstable_ViewTransition as ViewTransition } from 'react'
condition の変更は startTransition でラップする必要がある
function App() {
const [condition, setCondition] = useState(true)
const changeCondition = () => {
startTransition(() => {
setCondition(prev => !prev)
})
}
return (
<>
<botton onClick={changeCondition}>
change condition
</button>
<ViewTransition>
{condition ? <ComponentA /> : <ComponentB />}
</ViewTransition>
</>
)
}
<ViewTransition>コンポーネントは、デフォルトでview-transition-name: autoを適用し、簡単なトランジションを自動的に行うより詳細なアニメーションを制御したい場合は、nameプロパティを指定
<ViewTransition name="sloq-fade">
{page === 'A' ? <PageA /> : <PageB />}
</ViewTransition>
これにより、CSSの::view-transition-old(slow-fade)と::view-transition-new(slow-fade)疑似要素を使用して、アニメーションをカスタマイズできる
::view-transition-old(.slow-fade) { animation-duration: 500ms; } ::view-transition-new(.slow-fade) { animation-duration: 500ms; }
<ViewTransition> で fallback と Content をラップすると、スケルトンからコンテンツへの切り替えも スムーズなクロスフェード になる
<ViewTransition>
<Suspense fallback={<Skeleton />}>
<Content />
</Suspense>
</ViewTransition>
<ViewTransition>コンポーネントを利用するには、next.config.jsでviewTransitionフラグをtrueに設定する
// next.config.js
module.exports = {
experimental: {
viewTransition: true,
},
};
対応するIDEを起動し、Setting -> plugins から"JetBrains Junie"をインストール
.junie/guidelines.mdを置くと、Junieは必ず参照してタスクを実行するJunieは、AIがコードを書き、開発者が監督(設計、レビュー)して実装を進める。
設計から実装、テスト、レビューまで開発プロセス全体を通して使うという印象。
一方でCursorは、コード補完が優秀で、必要に応じてコード生成も依頼できる。使い方の自由度も高い。
JunieのAskモードでAIに任せる前に実装方針を整理できるところは嬉しいが、実際の開発で使いやすさはCursorの方が良いと感じた。