javascript - 从 props (JS/React) 访问过滤后的对象值
问题描述
我有一个愚蠢的问题。我正在尝试学习一些 React 并遇到了问题。
我正在使用 mapStateToProps 从 OwnProps 返回与特定 ID 匹配的过滤对象。那部分工作正常。当我记录状态时,我可以看到返回了正确的项目。问题是我不确定如何访问它传递给的组件中的值。
这是我的代码:
const ProductModal = (props) => {
return (
<Modal
isOpen={props.isOpen}
onRequestClose={props.handleCloseModal}
contentLabel="Modal"
className="modal"
>
<h3>Title</h3>
<p>Item Name Here</p>
<p>Item Style Here</p>
<p>Item Sale Here</p>
</Modal>
)
}
const mapStateToProps = (state, props) => {
return {
item: state.filter((item) => {
return item.id === props.selectedItem
})
}
}
const connectedOptionModal = connect(mapStateToProps)(OptionModal);
export default connectedOptionModal;
当我在组件中记录道具时,我看到了这些项目,但不确定如何实际访问这些值。
当我检查 Chrome 控制台时,我看到的是:
item: Array(1)
0: {
id: 123456,
name: t-shirts,
style: graphic,
sale: false
}
也许有一种方法可以返回“扁平”状态以消除0:?
抱歉,如果这是一个愚蠢的问题。
谢谢你的帮助。
解决方案
您可以尝试使用Array.prototype.find()。find()
返回与谓词匹配的数组中的第一个元素,或者undefined
如果没有找到。[0]
这可以帮助避免需要使用或类似方法访问数组元素。
const ProductModal = (props) => {
return (
<Modal
isOpen={props.isOpen}
onRequestClose={props.handleCloseModal}
contentLabel="Modal"
className="modal"
>
<h3>Title</h3>
{props.item &&
(
<div>{props.item.name} {props.item.style} {props.item.sale.toString()}</div>
)
}
</Modal>
)
}
const mapStateToProps = (state, props) => {
return {
item: state.find((item) => {
return item.id === props.selectedItem
})
}
}
const connectedOptionModal = connect(mapStateToProps)(OptionModal);
export default connectedOptionModal;
希望这会有所帮助!
推荐阅读
- django - 如何将 django-taggitsimilar_objects() 与基于类的视图一起使用
- excel - Expression.Error:无法识别名称“Text.BeforeDelimiter”。Excel 2016
- amazon-web-services - 如何在亚马逊 AWS 上加载 ena 驱动程序?
- api - 如何在 .net core 2.1 Angular 模板中测试 postman 中的 API 调用?
- android - Android上的快速(1s)双特征通知不会与外围设备断开连接
- r - r用ggridge绘制错误不同的行数
- python - 无序集中的重复
- file - 如何在fortran中读取和连接文件
- c - 难以理解 C 中的 MPI 分散和聚集
- ios - UIPanGestureRecognizer 不触发动作