に子供の小道具にアクセスすることができませんがUIを作成するために反応し、私は親コンポーネントと子コンポーネントを持って、これらの線に沿って何か:が反応:私が使用している親のイベントハンドラ
// Child component
var ListItem = React.createClass({
render: function() {
var link_details = (
<div>
Start Date: {this.props.my_data.start_date}<br/>
End Date: {this.props.my_data.end_date}<br/>
</div>
);
return (
<li>
<a onClick={this.props.clickHandler}>
{ this.props.my_data.name }
</a>
{link_details}
</li>
)
}
});
// Parent component
var Sidebar = React.createClass({
getInitialState: function() {
return {
my_data: [],
};
},
handleListItemClick: function(e){
console.log(e.target);
console.log(e.target.props);
},
render: function() {
var myLinks = this.state.my_data.map(function(mylink) {
return (
<ListItem key={mylink.id} my_data={mylink} clickHandler={this.handleListItemClick} />
);
}.bind(this));
return (
<div>
<ul className="nav nav-sidebar">
{ myLinks }
</ul>
</div>)
}
});
を私はクリックをしたいです親のハンドラをトリガーして、親がその子でクリックされた内容に基づいて状態を更新できるようにする。上のコードが動作し、親のハンドラが呼び出されている間、子コンポーネントの小道具にアクセスすることはできません。私はそれが設計であるかどうかわからないし、別の方法で子供から親にデータを渡すか、私が何か間違っているかどうかはわかりません。私はまだReactにはとても新しいので、どんなアドバイスも感謝しています。ありがとう!
var ListItem = React.createClass({
clickItem: function (e) {
this.props.clickHandler(e, this.props.my_data); // now you can pass any data to parent
},
render: function() {
var link_details = (
<div>
Start Date: {this.props.my_data.start_date}<br/>
End Date: {this.props.my_data.end_date}<br/>
</div>
);
return (
<li>
<a onClick={this.clickItem}>
{ this.props.my_data.name }
</a>
{link_details}
</li>
)
}
});
私はこれを試してみましたが、動作しているようですが、私のコンソールに警告が表示されます: '警告:bind():コンポーネントメソッドを反復するのはコンポーネントインスタンスにのみバインドされます。' '.bind(this、this.props .my_data_name')を '.bind(null、this.props.my_data_name)'に変更すると、エラーは解消されますが、この変更の結果はどういうものかはわかりません。 – Joseph
'{this.props.clickHandler.bind(null、this.props.my_data_name)}'はそれを行う正しい方法です。 – WitVault
答えを編集しました。 – WitVault