【发布时间】:2021-11-18 14:43:17
【问题描述】:
我在使用带有数组的 useState 钩子时遇到问题。我检查了stackoverflow上的各种资源,但无法修复它。
我的基本代码 sn-p 看起来像:
const [users, setUsers] = useState([]);
function addNewContact(user) {
const newUsers = [...users,user];
console.log(newUsers);
setUsers(newUsers);
}
<CardContainer users={users}></CardContainer>
class CardContainer extends Component {
constructor(props) {
super(props);
console.log("this -> ");
console.log(this.props.users);
this.state = {
users: this.props.users
}
}
render() {
//console.log(this.state.users)
return (
<div class="row row-cols-1 row-cols-md-2 g-4">
{
this.state.users.map(user => {
return <Card id={user.phone} title={user.name} email={user.email} phone={user.phone}></Card>
})
}
</div>
)
}
}
export default CardContainer;
我能够在控制台中看到更新的数组,但使用它的组件不会再次呈现。谁能帮我解决这个问题。
【问题讨论】:
-
我们需要查看卡片容器的代码。我们需要一个完全可重现的代码示例来使用
-
添加卡片容器组件
-
我会为 CardContainer 使用一个函数组件。
-
不一定能解决问题,但是,重要的是:首先,您需要确保有要渲染的内容,其次您需要提供
key属性到映射的<Card />组件,即this.state?.users?.map(user => {return <Card key={user.phone} id ={user.phone}.. -
我故意使用基于类来理解基于类的组件
标签: reactjs react-hooks