【发布时间】:2021-05-11 14:08:55
【问题描述】:
我是新来的反应和努力让它发挥作用。我可以显示一个映射数组,但我正在尝试更新数组,映射它,然后显示它。不知道如何让映射数组在更新后显示?
也尝试将 mappedItems 添加到我的函数中,但这似乎并没有解决问题。 TIA。
import React, { Component } from 'react';
const itemsList = ['item1','item2'];
class RecieveInput extends React.Component {
constructor(){
super();
this.state = {
list: itemsList
}
}
render(){
const pressedEnter = event => {
if (event.key === 'Enter') {
this.state.list.push(event.target.value);
console.log(this.state.list);
}
}
const mappedItemsList = this.state.list.map( (listItem, i) => <li>{this.state.list[i]}</li> )
return(
<div>
<input
type ="text"
id="textInput"
placeholder="Enter Item Here"
onKeyPress={pressedEnter}
/>
<ol className='ol'>{mappedItemsList}</ol>
</div>
)
}
}
export default RecieveInput
【问题讨论】:
-
你不应该直接改变状态
this.state.list.push(event.target.value);。这应该使用提供的this.setState即this.setState({ list: [...list, event.target.value ]});来完成。 React 使用this.setState来了解状态何时更新,并且类组件的shouldComponentUpdate方法仅对引用进行浅比较,因此如果您在设置状态时不创建新数组,React 不会将其视为更改.