1 回答
TA贡献1841条经验 获得超3个赞
this.label不存在,所以它是未定义的。要么 pass this.state.label,要么因为你正在解构对象,只是label. 只是一个小错误
render() {
const {label} = this.state
return (
<StyledInfoBox onClick={() => {this.props.selectBox(label)}}>
{label}
</StyledInfoBox>
)
}
您也不需要进行两次解构。
2. 不,你必须将所有的 props 传递给每个组件。没有理由你不能把盒子扔进一个循环中。您可以将标签放在一个数组中并迭代传递所有内容。现在您只需要实际编写一次。
class ContainingBox extends React.Component {
const boxChosen =(label) => {}
const labels = ['Aenean malesuada lorem', 'Lorem Ipsum dor ameet'];
render() {
return (
<div>
{labels.map((ele, index) => {
<InfoBox
key={index}
blurb={{label: ele}}
selectBox={this.boxChosen}
/>
})}
</div>
)
}
}
其他人可能比我能更好地回答这个问题。除了给它们命名一些有意义的东西之外,没有真正的约定。你是对的,你可以给它们命名不同的东西,因为它们只是不同范围内的函数。他们没有什么特别之处。你能说出他们同样的事情,但你并不需要到。您可以做的最好的事情是将它们命名为“自我记录”的东西,在它被定义的地方。
添加回答
举报