Array.protocol.map を使って順番にコンポーネントを順番に表示させるのは正しい使い方か
以前次のツイートがあった
荒れそうな話題を思いついた。JavaScriptで配列のmapメソッドを使うと配列の前から順番に関数が実行される仕様となっているが、
— 🈚️うひょ🤪✒📘 TypeScript本発売🫐 (@uhyo_) June 20, 2024
その順番に依存したコードを書いてもいいか。
🦊 書いてもいい
🐼 避けるべき(for-of, forEach, reduceなどに変えるべき)
これに対する次のツイートが気になっていた
これ否定されたらmap使ってリスト表示してるコンポーネントも否定されちゃう…🤔 https://t.co/b6glxWUV93
— きんみ (@_kinmi) June 20, 2024
多分この人の主張はこうだろう。 順序付きの配列 books に対して、順番にコンポーネントBookViewを表示させるために map を使っている。 これは「配列の前から順番に関数が実行される仕様となっているが、 その順番に依存したコードを書いてもいいか。」に対して「順番に依存したコードを書いて良い」になるのではないか。という話だ。
このツイートを見たとき、「あぁ、たしかに?」と思ってずっと気になっていた。 これは最初のツイートの問いを誤読した結果のツイートに思う。
books.map((book) => (<BookView book={book} />));
のようなコードでコンポーネントが順番に並ぶことを期待するというのは、map
での処理の順番に期待・依存しているのではなく、map
での実行結果が books
の配列の順序を破壊していないことに依存している。
というのが、かれこれ1ヶ月近く気になってたんかw すっきりした。
tech