Open12

Remixでなんか作りたい人の独り言

つきみつきみ

Cookieをあんまり触れたことが無いのも相まって、CookieとSessionって何が違うんだ?となってるので、ここからどうにかする必要があるかも

https://remix.run/docs/en/main/utils/cookies
https://remix.run/docs/en/main/utils/sessions

Hidden comment
Hidden comment
Hidden comment
Hidden comment
つきみつきみ

ここら辺きちんと理解していない自覚しかないので、コメント非表示にして置いたうえで、後でみっちり勉強しないといけない。

TODO:クッキーを理解しろつきみ

つきみつきみ

Cloudflare WorkersのModule Syntax?だと環境変数に直接アクセスできない。
Remixの場合、server.tscreatePagesFunctionHandlerでゴニョニョやって、
loader関数でcontextから環境変数をとることができるけど、loader関数が使えない場面ではどうするのが正解なんだ?

公式ドキュメントを読む限りは、

export default {
  async fetch() {
    ...
  }
}

って感じだけど、fetchってそんな使い方あるんか...って初めて知った

ちなみにDenoには環境変数をproccessみたいに呼び出せる代物があると聞いて気になってる
https://docs.deno.com/runtime/manual/basics/env_variables

つきみつきみ

Remix でこんなエラーが...

Objects are not valid as a React child (found: [ob…r a collection of children, use an array instead.

って思ったんだけど、loader関数にdefaultつけていたのが悪かったらしい
チックショー!

React系のフレームワークはReact Childが返される奴しかdefaultつけちゃダメなのかな?
分からん

つきみつきみ

remix-validated-form というバリデーションできるライブラリがあるらしい。
使ってみたところ、なぜかaction関数にフォームデータが渡されなかったので、Remix側のデフォルトの<Form>を使ってみた。

ただ、Formはinput, textareaだったりからしかデータをとってくれないので、
独自実装のフィールドはどないaction関数に渡すよう実装しよか...って感じ

つきみつきみ

remix-validated-formの useControlField でデータを取り扱えるのかな?
分かんねぇや

useStateの上に覆い被さるようなものだとは大まかに把握したが、それ以外が分かんねぇ...

つきみつきみ

Remixのコンポーネントではloader関数を使うことができなかった(よくよく考えたら当たり前かも)ので、
root.tsxloader関数からコンポーネントにPropsを渡すことによって解決

子コンポーネント側では

type HeaderProps = {
  show: boolean
}

export default function Header(props: HeaderProps) {
  return (<></>)
}

親要素では普通に

<Header show={true} />

って感じ
Propsの型指定は適当なので、いつか変更

以下学習のためのブックマーク

https://qiita.com/hinako_n/items/97ccaf85eb40d7e45657
https://zenn.dev/manalink_dev/articles/react-typescript-for-beginner