Javascript 在React中使用一组按钮
在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
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},它将数据变量传递到回调中。更干净