React.js: attach event von den Eltern an die Kinder
wie im Beispiel unten gezeigt, ich möchte MyComponent dynamisch anfügen eines "onClick" - Ereignis, um Ihre Kinder. Das onClick-Ereignis auslösen soll alertView, der sollte in der Lage sein zu nennen, das angeklickte element-Methode "getValue".
JSFiddle: http://jsfiddle.net/2g638bp8/
Wie dies zu tun? Dank
var MyComponent = React.createClass({
alertValue: function () {
//RETRIEVE THE CHILD HERE
alert(child.getValue());
},
render: function () {
var children = React.Children.map(this.props.children, function (c, index) {
return React.addons.cloneWithProps(c, {
ref: 'child-' + index
});
});
return (
<div>
{children}
</div>
);
}
});
var MySubComponent = React.createClass({
getValue: function () {
return this.props.val;
},
render: function () {
return (
<div>{this.props.val}</div>
);
}
});
React.render(
<div>
<MyComponent>
<MySubComponent val="1" />
<MySubComponent val="2" />
<MySubComponent val="3" />
</MyComponent>
</div>,
document.getElementById('container')
);
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie nicht rufen Methoden auf untergeordnete Komponenten Reagieren. Sie können nur die Eigenschaften festgelegt. (Die
child
ist eigentlich einReactElement
enthält Informationen über die Klasse und den zugehörigen Eigenschaften. Es ist nicht eine Instanz der Komponente, die Sie erstellt haben).So, könnte man über diese ein etwas anders Weg und bewegen Sie den
onClick
zu denMySubComponent
:Indem Sie das tun, kann Ihr code übergeben Sie den aktuellen Wert als ein event an die übergeordnete Komponente. Ich habe eine neue Veranstaltung aus der
MySubComponent
KlasseonGiveValue
. Dass jetzt gerade geht der Wert vonthis.props.val
. Aber, es könnte natürlich alles sein.React.cloneElement
statt..? (aufgrundcloneWithProps
veraltet)Reagieren bevorzugt Zusammensetzung design-Muster, So dass Ihre übergeordnete Komponente enthält diese drei Subkomponenten.
JS Fiddle: http://jsfiddle.net/68vt3umg/
MyComponent
was der OP wollte