Reactのuse
RFCが話題になっていたので、
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
はコンポーネント内に記憶領域を持たないからだという