为了账号安全,请及时绑定邮箱和手机立即绑定

在 React 中为数组中的每个项目创建按钮时,如何根据数组值传入唯一的 onClick 参数?

在 React 中为数组中的每个项目创建按钮时,如何根据数组值传入唯一的 onClick 参数?

胡说叔叔 2021-06-15 08:24:05
我正在为每个字符串创建一个按钮数组(即majorDivisions = [“upper”,“lower”])。我需要每个按钮都有一个 onClick 函数,其参数等于唯一值(即“上”或“下”),具体取决于用于创建按钮的值。它正在创建正确的按钮,但是在调用函数时,参数不是字符串而是一些类对象。return(  <div>    {this.state.majorDivisions.map((division) => {      return <button onClick = {this.renderDivisionRequirements.bind(null, {division})}>{division}</button>    })}  </div>)我的代码成功创建了 2 个按钮 [lower] 和 [upper],但是 onClick 参数 {division} 显示为类对象。
查看完整描述

1 回答

?
HUWWW

TA贡献1874条经验 获得超12个赞

当您将参数用大括号括起来时{division},例如,您正在传入一个对象。ie: { upper: "upper" }和{ lower: "lower" }


这被认为是在函数声明中创建对象的速记方法。


只需移除花括号,单个division参数就会按预期传递给每个按钮。


return(

  <div>

    {this.state.majorDivisions.map((division) => {

      return <button onClick = {this.renderDivisionRequirements.bind(null, division)}>{division}</button>

    })}

  </div>)

此外,为了让事情更简洁,我建议您将其renderDivisionRequirements()转换为箭头函数,这样您就不必绑定this. 或者使用匿名函数在单击按钮时调用它。


renderDivisionRequirements = () => {

...renderDivisionRequirements logic

}

所以你的返回逻辑可以是


return(

  <div>

    {this.state.majorDivisions.map((division) => {

      return <button onClick = {() => this.renderDivisionRequirements(division)}>{division}</button>

    })}

  </div>)


查看完整回答
反对 回复 2021-06-18
  • 1 回答
  • 0 关注
  • 177 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信