在React中使用一组按钮

时间:2018-03-19 19:51:35

标签: javascript reactjs button jsx

在反应中我有这样的代码:

 var myButtons=[];
 /*Products is an array of objects where each object identify a product*/
 for (var p of Products) {
     var button = <button 
                       style={someStyle}
                       onClick={onClickFunction}>
                       p.name
                  </button>
     myButtons.push(button)
 }

我将在渲染命令中使用此react按钮数组。我遇到的问题是我不知道如何使用其中一个按钮通过onClickFunction显示其标签p.name。

3 个答案:

答案 0 :(得分:1)

您可以将标签添加为参数:

<button style={someStyle} onClick={p.name => onClickFunction(p.name)}>
    p.name
</button>

并且:

onClickFunction = (label) => () =>{
    console.log(label)
}

答案 1 :(得分:1)

更简单,更友好的方式是使用函数迭代数据。 (请注意,这不会考虑范围,因此如果组件内部可能需要this

function makeButton(data) {
    return (
        <button 
            style={someStyle}
            onClick={() => onClickFunction(data.label)}> //pass parameter for callback here if binding isn't used
            data.name
        </button>
    );
}

现在您只需在div中使用绑定贴图!

<div>
    {Products.map(makeButton, this)}
</div>

答案 2 :(得分:1)

最简单的方法是使用ES6语法和数组map name属性应该是唯一的,不要忘记为每个按钮提供一个键:

const myButtons = Products.map(p => (
  <button style={someStyle} onClick={e=>{ this.onClickFunction(e, p.name); }} key={p.name}/>
    {p.name}
  </button>
));

使用箭头功能,因此不需要.bind(this)。如果按钮位于e.preventDefault()

,请添加form以防止默认行为
onClickFunction = (e, name) => {
  e.preventDefault();
  // Your button behavior goes here.
}