Reactの文脈での「副作用」は2種類あるのではという話
BRANK
皆さんこんにちは。Reactの話をする際に、副作用という言葉はよく出てきます。しかし、実は、我々は2つの異なる意味で「副作用」という言葉を使っており、そのせいで混乱が生じているのではないかと思います。例えば、筆者が最近書いた以下の記事では、基本的にuseEffectの中でfetchするべきではないと説明しました。 “副作用” について考察しましょう。useEffectはコンポーネントの副作用を記述するためのフックである。これは、前述のQiita記事でも説明した概念です。まず、コンポーネントの作用とは何か考えましょう。ここでは、そのコンポーネントがレンダリングされると何が起こるのかを指して作用と呼んでいます。コンポーネントの主たる作用は、コンポーネントがレンダリングされた位置にコンポーネントの内容(所定のDOM要素)を表示することです。コンポーネントはJSXを返すことで自身の作用を宣言し、Reactランタイムがその作用を実際に行います。しかし、コンポーネントによっては、DOMに表示すること以外にもレンダリングされたことによる影響(作用)を持つことがあります。前述のQiita記事では副作用という言葉を避けて「コンポーネントが表示されているこ…