我有一个对象数组.我想映射这个对象数组.我知道如何映射数组,但无法弄清楚如何映射对象数组.这是我到目前为止所做的:
我要映射的对象数组:
- const theData = [
- {
- name: 'Sam',email: 'somewhere@gmail.com'
- },{
- name: 'Ash',email: 'something@gmail.com'
- }
- ]
我的组件:
- class ContactData extends Component {
- render() {
- //works for array
- const renData = this.props.dataA.map((data,idx) => {
- return <p key={idx}>{data}</p>
- });
- //doesn't work for array of objects
- const renObjData = this.props.data.map(function(data,idx) {
- return <p key={idx}>{data}</p>
- });
- return (
- <div>
- //works
- {rennData}
- <p>object</p>
- //doesn't work
- {renObjData}
- </div>
- )
- }
- }
- ContactData.PropTypes = {
- data: PropTypes.arrayOf(
- PropTypes.obj
- ),dataA: PropTypes.array
- }
- ContactData.defaultProps = {
- data: theData,dataA: dataArray
- }
我错过了什么?
你需要的是映射你的对象数组并记住每个项目都是一个对象,这样你就可以使用例如点符号来获取对象的值.
在您的组件中
- [
- {
- name: 'Sam',email: 'something@gmail.com'
- }
- ].map((anObjectMapped,index) => {
- return (
- <p key={`${anObjectMapped.name}_{anObjectMapped.email}`}>
- {anObjectMapped.name} - {anObjectMapped.email}
- </p>
- );
- })
并且记住,当你放置一个jsx数组时,它有不同的含义,你不能只在你的渲染方法中放置对象,因为你可以放一个数组.
在mapping an array to jsx看一下我的回答