I have difficulties to attach dynamic events to my react ponents. I have the following ponents:
var ListItem = React.createClass({
render: function() {
return (
<li className="selector" >
<div className="column">
<h2 className="mentAuthor">
{this.props.author}
</h2>
<div>{this.props.children}</div>
</div>
</li>
);
}
});
var ListBox = React.createClass({
mixins : [MyMixin],
render : function() {
this.nodes = this.props.data.map(function(item) {
return <ListItem author={item.author}>{item.text}</ListItem>;
});
return (
<ul id="columns">
{this.nodes}
</ul>
);
}
});
As you see the ListItem has className set to "selector". Base on this "selector" I want to query nodes and attach dynamically events in the MyMixin.
React.renderComponent(
<ListBox data={data} selector="li.selector" />,
document.getElementById('example')
);
Maybe my idea is all wrong as I'm fairy new to React.
Regards
I have difficulties to attach dynamic events to my react ponents. I have the following ponents:
var ListItem = React.createClass({
render: function() {
return (
<li className="selector" >
<div className="column">
<h2 className="mentAuthor">
{this.props.author}
</h2>
<div>{this.props.children}</div>
</div>
</li>
);
}
});
var ListBox = React.createClass({
mixins : [MyMixin],
render : function() {
this.nodes = this.props.data.map(function(item) {
return <ListItem author={item.author}>{item.text}</ListItem>;
});
return (
<ul id="columns">
{this.nodes}
</ul>
);
}
});
As you see the ListItem has className set to "selector". Base on this "selector" I want to query nodes and attach dynamically events in the MyMixin.
React.renderComponent(
<ListBox data={data} selector="li.selector" />,
document.getElementById('example')
);
Maybe my idea is all wrong as I'm fairy new to React.
Regards
Share Improve this question edited Jan 29, 2016 at 21:52 Dmitry Shvedov 3,3064 gold badges40 silver badges56 bronze badges asked Dec 20, 2013 at 14:13 user732456user732456 2,6982 gold badges38 silver badges51 bronze badges1 Answer
Reset to default 6You should listen to events directly on the ListItem ponent. React doesn't want you to think about attaching listeners later.
var ListItem = React.createClass({
handleClick: function(event) {
// Handle ListItem click
},
handleDoubleClick: function(event) {
// Handle ListItem double click
},
render: function() {
return (
<li className="selector"
onClick={this.handleClick}
onDoubleClick={this.handleDoubleClick}>
<div className="column">
<h2 className="mentAuthor">
{this.props.author}
</h2>
<div>{this.props.children}</div>
</div>
</li>
);
}
});
React expects the attributes to exactly match the event name. You can check out the full list of supported events to make sure you use the right names.