リストとキー
n/a.ターゲット
8.リストとキー
8-1. 複数のエンティティをレンダリング
const numbers = [1, 2, 3, 4, 5];
const listItems = numbers.map((number) =>
<li>{number}</li>
);
ReactDOM.render(
<ul>{listItems}</ul>,
document.getElementById('root')
);
8-2. 既定のリスト構成部品
function NumberList({ 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} />,
document.getElementById('root')
);
8-3. Key
const numbers = [1, 2, 3, 4, 5];
const listItems = numbers.map((number) =>
<li key={number.toString()}>{number}</li>
);
「」を参照してください。
const listItems = numbers.map((number, index) =>
<li key={index.toString()}>{number}</li>
);
8-4. キーで構成部品を抽出
export default function List() {
const todos = [
{
id: 1,
do: "go to hospital"
},
{ id: 2, do: "go to cafe" },
{ id: 3, do: "eating dinner" }
];
const Item = (props) => {
return <li key={props.id}>{props.do}</li>;
};
const todoList = todos.map((todo) => <Item {...todo} />);
return <ul>{todoList}</ul>;
}
非export default function List() {
const todos = [
{
id: 1,
do: "go to hospital"
},
{ id: 2, do: "go to cafe" },
{ id: 3, do: "eating dinner" }
];
const Item = (props) => {
return <li>{props.do}</li>;
};
const todoList = todos.map((todo) => <Item key={props.id} {...todo} />);
return <ul>{todoList}</ul>;
}
8-5. Keyは兄弟の間で唯一の値でなければならない。
export default function List() {
const todos = [
{
id: 1,
do: "go to hospital"
},
{ id: 2, do: "go to cafe" },
{ id: 3, do: "eating dinner" }
];
const Item = (props) => {
return (
<li>
{props.key}
{props.do}
</li>
);
};
const todoList = todos.map((todo) => <Item key={todo.id} {...todo} />);
return <ul>{todoList}</ul>;
}
const todoList = todos.map((todo) => <Item key={todo.id} id={todo.id} do={todo.do} />);
ソース
Reference
この問題について(リストとキー), 我々は、より多くの情報をここで見つけました https://velog.io/@dev0408/react-official-document-8テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol