Я нашел ошибку в моем существующем приложении. Я пытаюсь отобразить таблицу своих объектов, где я хочу показать название компании, когда-либо наверху, если есть какие-либо изменения.reactjs - Как отобразить название компании только один раз и показать все измененные объекты в других строках
Этот код работает для меня, если я удалю (i === 0), но проблема в том, что он повторяет название компании в верхней части каждого нового объекта внутри компании. Но теперь я использую i === 0, и он отлично работает, если я только первый раз меняю первый объект в деталях компании, а затем меняю любое другое средство. Я никогда не показываю мне название компании, если я начну менять какое-либо средство, кроме первого, поскольку значение i изменилось с 0 на другое. Любая идея, как я могу ее исправить и выйти из моей проблемы.
{companies.map((company,i) =>
company.facilityGroups.map((group,i) => {
let facilityNo = 0
return grp.facilities.map((fac,j) => {
const existinglimitInFacilityCurrency = fac.existingFacility.limitInFacilityCurrency
const proposedlimitInFacilityCurrency = fac.proposedFacility.limitInFacilityCurrency
const facilityJustAdded = !existinglimitInFacilityCurrency && proposedlimitInFacilityCurrency
const facilityHasProposedChanges = ((existinglimitInFacilityCurrency && proposedlimitInFacilityCurrency) &&
(existinglimitInFacilityCurrency.amount !== proposedlimitInFacilityCurrency.amount))
|| !!facilityJustAdded
if(facilityHasProposedChanges) facilityNo++
return (
<tbody key={j}>
{i===0 && facilityNo===1 && facilityHasProposedChanges ? (()=>{
return(
<tr className="table__tr--subheading">
<td colSpan="7">{company.companyName}</td>
</tr>)
})() : null}
{facilityHasProposedChanges ? (() => {
return(
<tr>
<td>{fac.description}</td>
<td>
....
</tr>)
})() : null}
</tbody>
)
})
})
)}
Я также прилагается изображение, как выглядит выход .. How it is working now..
Я удаляю часть кода, но я надеюсь, что логика понятна в существующем коде. Извините за опечатку. –
Просто примечание: '
' такое же, как '' (он [transpiles to 'React.createElement (" tbody ", {key: (i , j)}); '] (http://babeljs.io/repl/#?babili=false&evaluate=false&lineWrap=false&presets=react%2Cstage-3&targets=&browsers=&builtIns=false&code=%3Ctbody%20key%3D%7Bi% 2Cj% 7D% 3E% 3C% 2Ftbody% 3E & experimental = false & loose = false & spec = false & playground = true), а '(i, j)' оценивается значением 'j'). Вам нужно будет придумать что-то еще, если вы хотите использовать два значения в качестве ключа, например. '' Ключ = { '$ {I}, $ {j}'} ''. –Вы правы. Я только что исправил то, что у меня есть в моем существующем коде. Я пытался использовать и i, и j Но неплохо бы попробовать. Любое предложение. –
ответ
Я исправил проблему. Я просто переместил переменную (пусть объектNo = 0) за пределы петель, и она исправила мою проблему. теперь мой код выглядит так.
источник
2017-02-24 09:42:40
Смежные вопросы