1
我从ReactJs开始,并且遇到麻烦,理解如何从函数返回所需的值。.filter和.map转换成函数返回?
我写了1400条代码行来完成这个简单的健身计划分类(example here)。大多数百个循环看起来是一样的......我相信这是最糟糕的方式,因此我在这里发布它,希望有人能让我走向正确的方向。 这样的代码了一遍又一遍:
const monday0700= this.state.data.map((clase, index) => {
if (clase.dia === 1 && clase.horaclase < "08:00") {
return (
<li key={index} className={clase.estilo}>{clase.actividad}
<p className="duracion">{clase.duracion}</p>
<p className="sala">{clase.hoy} {clase.sala}</p>
</li>
)
} else { return false }
})
,然后又有很多代码看相同的渲染方法:
<div className="horario-container">
<ul className="horario-item">{monday0700}</ul>
<ul className="horario-item">{monday0800}</ul>
<ul className="horario-item">{...}</ul>
<ul className="horario-item">{...}</ul>
<ul className="horario-item">{...}</ul>
</div>
你可以得到这个可怕的代码的想法......但不知何故它的工作! :O
好的,那之后。我工作的这个功能
filtrarClase(dia, hora) {
let data = this.state.data
data.filter(clase => {
if ((clase.dia === dia) && (clase.horaclase === hora)) {
return clase.actividad
} else {
return false
}
})
.map((clase,i) => {
console.log(clase.actividad) // OK RECEIVE "SpinBike"
return (
<li key={i}>
<p>{clase.actividad}</p> //NO WORKING
</li>
)
})
}
这让我得到一个“的console.log”与每个调用正确的结果,但打印页面上的任何内容。
this.filtrarClase(1,'07:30')
然后使其:
render() {
const lunes0730 = this.filtrarClase(1,'07:30') // ANOTHER FAIL TRY
console.log('lunes0730: ', lunes0730) // Returns UNDEFINED
return (
<div className="App">
{this.filtrarClase(1,'07:30')} // NOTHING HAPPENS :(
</div>
)
}
但坚持在这里...... 我会很高兴,如果有人可以帮助我,非常感谢。
感谢M8,你做我的日子好了,还解决问题。 –
检查更新的答案,很高兴它帮助你:) –
是啊!再次感谢@MayankShukla –