私は、リストから生成されたアイテム(マップ機能付き)を持つこのReactコンポーネントを持っています。これらの各要素にはボタンがあります。このボタンのonclickボタンをクリックして、どのリスト項目のボタンがクリックされたのかを識別します。ReactJS onclickのパラメータを渡す
このような感じです。
var Component = React.createClass({
assignItem: function(item){
this.setState({item:item})
},
render: function(){
var listItems = list.map(function(item){
return <div>{item}
<button onClick={this.assignItem(item)>Click</button>
</div>
})
return <div>{listItems}</div>
}
})
もちろん動作しません。エラーメッセージは、this.assignItemが関数ではないことを示しています。
var handleClick = function(i, props) {
console.log('You clicked: ' + props.items[i]);
}
function GroceryList(props) {
return (
<div>
{props.items.map(function(item, i) {
return (
<div onClick={handleClick.bind(this, i, props)} key={i}>{item}</div>
);
})}
</div>
);
}
ReactDOM.render(
<GroceryList items={['Apple', 'Banana', 'Cranberry']} />, mountNode
);
をそれは部品の外機能で動作します。私は公式を知って は、ドキュメントは、この示唆して反応します。私は自分の機能が状態を操作したいので、Reactコンポーネント内に保持したい。
どうすればよいですか?
優秀!とてもシンプルで、効果的でした!どうもありがとう。 –
@MariePelletier、もし私がタグを返すならば、私もpreventDefaultをする必要があります。どのようにイベントをassignItemに渡すのですか?または、そのような場合には常に
'bind'は引数を前に置いても元の引数を渡すので、' assignItem'は2番目のイベント引数を 'function(item、event)'として取り、 'event.preventDefault ) '。 – Aaron