Reactではmapから出てきた要素にイベントを追加できません
1659 ワード
reactの使用では、reactのmap関数がよく使われ、jqueryのmapと同じ使い方をしますが、mapごとに出てくる要素に追加すると、追加したイベントが関連付けられていないことに気づきます.
例えば、私たちの多くのコメントは、私は各コメントの下に返事のinputを追加する必要があります.input期間は最初は隠していました.私が毎日コメントの下の返事をクリックすると、input入力ボックスが表示されます.
ここで例を挙げます.例えば、私の配列には3つの文字があります.私はそれらをliにレンダリングします.各li、alert()をクリックして各liの中の内容を出します.次の方法では、エラーに気づき、表示できません.
正しい方法は、mapの時にreturnを行わないことです.まずmapの結果を変数に保存します.例えば、配列に保存して、returnという配列に保存することができます.これで私たちの効果を達成できます.コードは以下の通りです.
例えば、私たちの多くのコメントは、私は各コメントの下に返事のinputを追加する必要があります.input期間は最初は隠していました.私が毎日コメントの下の返事をクリックすると、input入力ボックスが表示されます.
ここで例を挙げます.例えば、私の配列には3つの文字があります.私はそれらをliにレンダリングします.各li、alert()をクリックして各liの中の内容を出します.次の方法では、エラーに気づき、表示できません.
var myTest = React.createClass({
handleChange: function(item) {
console.log(item);
},
render: function () {
var showArry = ['hello1', 'hello2', 'hello3'];
return (
<ul>
{
showArry.map(function (item) {
return <li onClick={this.handleChange.bind(this.item)}>{item}</li>;
})
}
</ul>
);
});
React.render(<myTest/>, document.body);
正しい方法は、mapの時にreturnを行わないことです.まずmapの結果を変数に保存します.例えば、配列に保存して、returnという配列に保存することができます.これで私たちの効果を達成できます.コードは以下の通りです.
var myTest = React.createClass({
handleChange: function(item) {
console.log(item);
},
render: function () {
var showArry = ['hello1', 'hello2', 'hello3'];
var newArry=[];
for(var i=0;i<showArry.length;i++){
var item=showArry[i];
return newArry.push(<li onClick={this.handleChange.bind(this,item)}>{item}</li>)
}
return (
<ul>
{newArry}
</ul>
);
});
React.render(<myTest/>, document.body);