reactjs - 为什么反应组件状态没有更新
问题描述
我在产品页面上有一个 Like 组件。该组件是一个按钮,单击该按钮时,该产品将放入 states like 数组。问题是当我更改产品并单击按钮时,第二个产品没有添加到阵列中,而是替换了阵列中的另一个产品。例如。我单击一件衬衫,我看到它已添加到数组中。我回去点击另一件衬衫,而不是两件衬衫都在数组中,只有我点击的最后一件衬衫在数组中。以下是包含 Like 组件和 Like 页面的产品详细信息页面
class Details extends Component {
render() {
const { id } = this.props.match.params;
const productList = this.props.products.map(product => {
if (product.product_id == id) {
return (
<div className="container product_details">
<div className="left">
<div className="images">
<img className="detail_main-photo" src={product.image} />
</div>
</div>
<div className="right">
<h2 className="detail_heading">{product.title}</h2>
<p className="detail_description">{product.description}</p>
<div className="detail_size">
</div>
<p className="detail_price">${product.price}</p>
<Likes product={product} />
</div>
</div>
)
}
})
return (
<div >
{productList}
</div>
)
}
}
export default Details;
class Likes extends Component {
state = {
likes: []
}
addLike = () => {
const button = document.querySelector('.submit')
const Liked = this.state.likes.findIndex(like => {
return like.id === this.props.product.product_id
})
if (Liked) {
const { product } = this.props;
const newLike = {
id: product.product_id,
image: product.image[0],
title: product.title,
price: product.price
}
this.setState({
likes: [...this.state.likes, newLike]
})
}
}
render() {
console.log(this.state)
return (
<button className="submit" onClick={this.addLike}>Add To Wishlist</button>
)
}
}
export default Likes;
解决方案
推荐阅读
- javascript - 自定义模态未在 Reactjs 中呈现
- javascript - Bootstrap 5:通过 JavaScript 显示下拉菜单时出错
- c# - 从自定义位置加载本地化资源
- wordpress - 如何在 WooCommerce 中使用已经存在的产品属性而不是使用 WC_Product_Attribute 类创建新属性?
- java - 使用 Java AWS 开发工具包和访问点将对象上传到 S3
- java - 如何对使用游戏循环的 Java 套接字游戏进行单元测试?
- ios - iOS OAuth2 授权最佳实践
- html - 如果在 css 网格中使用百分比,则错误 safari div 的大小计算
- javascript - 如何通过 API 控制器使用 Ajax 将对象列表加载到选择标签中?
- javascript - 在二叉搜索树Javascript的画布上定位圆