Closed7

React Router v7 middlewareを使ってみる

n13un13u
n13un13u

.changesetにはdeclare moduleする必要があるように書かれているがなくても型は生成される

結果的には嘘、ContextがAppLoadContextとして認識されてしますのでしっかりと記述する必要がある

n13un13u
  • changesetを読む限りでは、root.tsxだけでなくroute moduleで動きそう
  • 以下を書くだけ
    • unstable_のprefixがないと動かない。(いつはがれる?BCになりそうで怖い
export const unstable_middleware = [serverLogger, serverAuth]; // server
export const unstable_clientMiddleware = [clientLogger]; // client
n13un13u
  • middleware内で redirectthrow すると全ての処理を破棄してリダイレクトできる
    • 認証系ではこっちを使うのが良さそう
n13un13u

.changesetの110行目あたりのここ多分typoってる. nextは第二引数でとる

```tsx
const redirects: Route.unstable_MiddlewareFunction = async ({
  request,
  next,
}) => {
n13un13u

const res = await next()は必須ではない。Response をいじって返したい時だけ(CookieとかSession とかかな)

n13un13u
  • route matchをしたいときはlayoutから呼ぶ
  • layoutでなくてもroute moduleであればmiddlewareが呼び出しできる
  • なのでTypedRoutesの恩恵を受ける
このスクラップは2ヶ月前にクローズされました