UGA Boxxx

つぶやきの延長のつもりで、知ったこと思ったこと書いてます

【React】use RFCについて

ReactのuseRFCが話題になっていたので、 github.com

uhyoさんの記事を読んで理解を深めた
zenn.dev

useとは

useはSuspense機構を使う上で必要だった「Promiseをthrowする」という処理を、サードパーティからReact内部に隠蔽する仕組みで、Reactユーザーにとってもライブラリ製作者にとっても嬉しい提案とのこと

使い方(RFCより引用)

function Note({id, shouldIncludeAuthor}) {
  const note = use(fetchNote(id));
  let byline = null;
  if (shouldIncludeAuthor) {
    const author = use(fetchNoteAuthor(note.authorId));
    byline = <h2>{author.displayName}</h2>;
  }
  return (
    <div>
      <h1>{note.title}</h1>
      {byline}
      <section>{note.body}</section>
    </div>
  );
}

useの使用箇所をみると、awaitなしでPromiseから中身を取り出すことができている

従来のフックとの違いの一つで、分岐条件の中でも使えている(常に同じ順序で同じ数だけ呼ばれるわけではない)のが面白いとおもった

これは従来のフックがコンポーネント内の記憶領域に「何番目のフック用なのか」を記憶しているのに対して、useコンポーネント内に記憶領域を持たないからだという

他にも「すぐに解決されるPromise」はサスペンドしないなど、このRFCでの面白い点が記事を読んでいろいろ理解できた