javascript - 如何将 props 从容器组件传递到类组件
问题描述
我试图将逻辑从类组件分离到容器组件,以便类组件只负责呈现 html。所以,我在这里有两个组件,一个是Home,它是一个类组件,另一个是Home Container,它包含Home组件的代码,即 mapStateToProps 和 mapDispatchToProps。
以下是文件: Home.js:
render(){
// Maps over 'items'
let itemList = this.props.items.map((item) => {
return (
<div className="card" key={item.id}>
<img className="card-img-top" src={item.img} alt={item.title} />
<div className="card-body">
<span className="card-title">{item.title}</span>
<span to="/" onClick={() => {this.handleClick(item.id)}}><i className="material-icons">add</i></span>
</div>
<div className="card-content">
<p>Price: {item.price}</p>
{/* <p>{item.quantity}</p> */}
</div>
</div>
)
})
return(
<div className="container">
<h3 className="text-center">Our items</h3>
<div className="box">
{itemList}
</div>
</div>
)
}
它从容器组件中获取道具,即
HomeContainer.js:
class HomeContainer extends React.Component {
render(){
return(
<div>
<Home items={this.props.items}/>
</div>
)
}
}
const mapStateToProps = (state) => {
return {
items: state.items
}
}
const mapDispatchToProps = (dispatch) => {
return {
addToCart: (id) => {dispatch(addToCart(id))}
}
}
export default connect(mapStateToProps, mapDispatchToProps)(HomeContainer)
我正在将道具传递给HomeContainer中的Home。
当我试图通过映射项目来访问Home组件中的这些道具时,我得到了无法读取 undefined 的属性。我该如何解决这个问题。
解决方案
推荐阅读
- sql-server - 如何在 SQL Server Express LocalDB 中使用 GORM ORM for Golang?
- sql - 一张表内的关系链接
- mysql - 关于在复制数据库上更新表的问题
- azure - 我是否应该将完整的用户存储(AspNetRoles、AspNetUserClaims、AspNetUserLogins 等)迁移到 Azure AD B2C?这是标准做法吗?
- java - 当我尝试编组时,从 WSDL 生成的类上缺少标记 @XmlRootElement
- sockets - 部署后 Socket io 不工作(MERN 应用程序)
- python - Flask 迁移不适用于所有表
- mysql - Ghost-CLI 'ghost start' 失败报告中的 ER_NOT_SUPPORTED_AUTH_MODE 是什么意思?
- python - 如何在不使用python断开图形的情况下随机删除n条边
- php - 我想使用 laravel 8 mvc 从一个复选框中检查我的所有复选框