【问题标题】:react mapping function not working反应映射功能不起作用
【发布时间】:2018-12-30 21:05:21
【问题描述】:

嘿,我有这个对象数组

this.state = {
        users :[{
            userid:'1',
            fullName :'eddyabikhalil',
            dob:'10/03/1994',
            gender:'M',
            loan:[{
                loanid:'1',
                date:'20/7/2012',
                loanValue:'100$',
            }, 

            {
                loanid:'2',
                date:'21/4/2014',
                loanValue:'200$',
            },

            {
                loanid:'3',
                date:'20/12/2015',
                loanValue:'300$',
            }]
    },




 userid:'2',
 fullName :'joe salloum',
 dob:'11/04/1993',
 gender:'M',
loan:[{
loanid:'4',
date:'20/7/2012',
loanValue:'500$',
}, 

 {
loanid:'5',
date:'21/4/2017',
loanValue:'600$',
 },

{
loanid:'6',
date:'20/12/2012',
loanValue:'700$',
}

  ],

    }]
}



 }

所以我写了这个函数来映射这个对象数组:

renderTable(userValue) {
let HTML = [];
let groupedVals = groupBy(userValue, 'userid');
let usersObj = [];

map(groupedVals, (value,  key) => {

    let userss = {
       FullName: value.fullName,
        dob: value.dob,
        gender: value.gender,
        loans: []
    }

    map(value, (subValue) => {                
        userss.loans.push(subValue.loanValue)
    })

    usersObj.push(userss);




})


map(usersObj, (val) => {

    HTML.push(<tr>
        <td>
            {val.FullName}
        </td>

        <td>
            {val.dob}
        </td>

         <td>
            {val.gender}
        </td>

        <td>
            {val.loans.join(',')}
        </td>
      </tr>
        )
        })


 return HTML;
  }

我想制作一个包含以下字段的表格:全名、出生日期、性别和贷款

我想证明userid = 1 在一个td 中有多个贷款价值

所以我创建了这个表:

render() {
return (
    <div className="container">
        <table className="table table-striped">

            <thead>
                <tr>
                    <td>FullName</td>
                    <td>dob</td>
                    <td>gender</td>
                    <td>loans</td>
                </tr>
            </thead>
            <tbody>
                {
                    this.state.users &&
                    this.renderTable(this.state.users)
                }
            </tbody>
        </table>
    </div>
);

}

有什么帮助吗?提前致谢

【问题讨论】:

  • 你能格式化你的代码并正确缩进吗?
  • 地图不是那样使用的。在数组上使用
  • 怎么样?你能帮我PLZ怎么做吗? @ShubhamAgarwalBhewanewala

标签: reactjs mapping


【解决方案1】:
render() {
return (
    <div className="container">
        <table className="table table-striped">

            <thead>
                <tr>
                    <td>FullName</td>
                    <td>dob</td>
                    <td>gender</td>
                    <td>loans</td>
                </tr>
            </thead>
            <tbody>
                {
                    this.state.users.map((user) => (
                        <tr>
                             <td>{user.fullName}</td>
                             <td>{user.dob}</td>
                             <td>{user.gender}</td>
                             <td>{user.loan.map((loan) => { return (loan.id + ",") })}</td>
                        </tr>
                    ))
                }
            </tbody>
        </table>
    </div>
);
}

【讨论】:

  • 返回空表
  • 这只会检查您的数据和所有内容。我更新了它请检查用小括号替换的花括号
  • 好的,谢谢,但有一个小问题.. 它只返回一个人,但这里我有两个......如果我打扰你了,我很抱歉
  • 你能在控制台中看到两个用户作为console.log(this.state.users)
  • 您在问题中发布的状态似乎格式不正确。我已经格式化了第一个用户,请像这样格式化你的第二个用户
猜你喜欢
  • 1970-01-01
  • 2019-07-21
  • 1970-01-01
  • 2018-10-30
  • 2023-01-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多