首先,你需要了解你的listItems
不是一個組件,它只是一個反應元素的數組。所以你需要把它們放在某個組件的渲染方法中。
class ListItemComp extends React.Component {
render() {
const numbers = [1, 2, 3, 4, 5];
const listItems = numbers.map((number) =>
<li>{number}</li>
);
return (<ul>{listItems}</ul>);
}
}
其次,如果你想改變的數據,並且要做出反應知道,變化和重新渲染的觀點,那麼你需要調用this.setState()
的地方,並確保數據的變化是可訪問從this.state
。所以讓我們稍微改變一下組件。
class ListItemComp extends React.Component {
constructor() {
super()
const numbers = [1, 2, 3, 4, 5];
this.state = {
numbers: numbers
};
// first it'll render "1,2,3,4,5"
// wait 3 seconds, it re-render to "1,5,3,4,5"
setTimeout(() => {
if (numbers[1] == 2)
numbers[1] = 5;
else
numbers[1] = 0;
this.setState({ numbers: numbers });
}, 3000);
}
render() {
const listItems = this.state.numbers.map((number) =>
<li>{number}</li>
);
return (<ul>{listItems}</ul>);
}
}
請注意,您應該向'li'添加一個鍵:(number,index)=>