Javascript 在React中使用一组按钮

Javascript 在React中使用一组按钮,javascript,reactjs,button,jsx,Javascript,Reactjs,Button,Jsx,在react中,我有这样一个代码: 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={onClickFu

在react中,我有这样一个代码:

 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)
 }

我将在渲染命令上使用此按钮数组。我的问题是,我不知道如何使这些按钮之一通过onclick函数显示其标签p.name

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

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

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

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

一种更简单、更用户友好的方法是使用函数迭代数据。请注意,这并没有考虑范围,所以如果它位于组件内部,则可能需要这样做

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>

一种更简单、更用户友好的方法是使用函数迭代数据。请注意,这并没有考虑范围,所以如果它位于组件内部,则可能需要这样做

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>

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

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

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

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

该函数可以接受参数sso,我是否应该使用:var button=onClickFunctionp.name}>p.name您肯定可以这样做,但是,我建议您颠倒逻辑。您正在迭代产品,但是调用一个返回a的函数,这样您就可以执行如下操作:{products.mapmakeButton,this},它将数据变量传递到回调中。更干净函数可以接受参数SSO,我是否应该使用:var button=onClickFunctionp.name}>p.name您完全可以这样做,但是,我建议您颠倒逻辑。您正在迭代产品,但是调用一个返回a的函数,这样您就可以执行如下操作:{products.mapmakeButton,this},它将数据变量传递到回调中。更干净