はじめに
swim-loverです。 初心者向けのWebアプリ開発記事です。フロントエンド環境にReact.jsを使用しています。Webアプリ開発記事と述べていますが、未だに、公式ページをお手本にしているだけで、まだまだ道半ばです。
第14回では、公式サイトに従い、テスト用ドメインで、条件付きレンダーについて実装し確認しました。
引き続き、Reactの勉強を進めていきたいと思います。
React map関数
map関数は、配列に操作をシンプルな記述で行える便利な関数です。
Reactで使う前に、map関数の動作を確認してみることにしました。
第一引数を表示
console.log("---map test1----");
const numbers = [1, 2, 3, 4, 5];
numbers.map((num) => {
console.log(num);
}
)
第一引数には、配列の値が入っています。
---map test1----
1
2
3
4
5
第一引数の値を4倍
const numbers = [1, 2, 3, 4, 5];
console.log("---map test2----");
numbers.map((num) => {
console.log(num * 4);
}
)
配列の値は4倍されました。
---map test2----
4
8
12
16
20
第2引数の中身を確認
第2引数には、配列のIndex値(0,1,2,3,4)が入っているようです。第1引数と第2引数を乗算してみます。
const numbers = [1, 2, 3, 4, 5];
console.log("---map test3----");
numbers.map((num,ind) => {
console.log(num * ind);
}
)
第2引数に配列のIndex値が入っていることが確認できました。
---map test3----
0
2
6
12
20
第3引数の中身を確認
配列をobject 文字列にして確認しました。
console.log("---map test4----");
const object = ["car", "person", "bike", "dog", "bus"];
object.map((num,ind,array) => {
console.log(array);
}
)
配列自身が入っているようです。Array(5)が5個表示されている点はよくわかっていません。
React 箇条書きリスト
1〜5の箇条書きリストを表示しています。アロー演算時の処理内容として、<li></li>を返しています。
const title= document.querySelector('#hello_world_19');
const numbers = [1, 2, 3, 4, 5];
const listItems = numbers.map((numbers) =>
<li>{numbers}</li>
);
ReactDOM.render(<ul>{listItems}</ul>,title);
次に、関数NumberList内でレンダリングするようにコードを変更します。コードの改良なので、実行結果は変わりません。
const title= document.querySelector('#hello_world_20');
function NumberList(props) {
const numbers = props.numbers;
const listItems = numbers.map((number) =>
<li>{number}</li>
);
return (
<ul>{listItems}</ul>
);
}
const numbers = [1, 2, 3, 4, 5];
ReactDOM.render(<NumberList numbers={numbers} />,title);
しかし、開発者ツール確認すると、”react_devtools_backend.js:4026 Warning: Each child in a list should have a unique “key” prop.”というワーニングがでていました。key属性を持つように警告されてます。
keyとは?
配列にkeyを指定すると、配列データの追加、変更が生じた時に効率的に描画ができるようになります。
詳細は、次回以降で取り扱いたいと思います。
まとめ
今回も、map関数の基本的な確認と公式サイトに従い、箇条書きリストを作成しました。
組み込み系ソフトエンジニアをしています。これまでフロントエンド技術は避けてきましたが、食わず嫌いをやめて、勉強を始めました。
趣味は、水泳、ロードバイク、ランニング、登山です。
組み込み系技術ネタ、勉強したフロントエンド技術、たまに趣味の運動について発信していきます。
どうぞよろしくお願いします。
コメント