Ich habe ein Problem mit einem ref zu einer react-Komponente hinzufügen. Unten ist die Fehlermeldung.React ref funktioniert nicht Invariant Violation: addComponentAsRefTo
invariant.js:39Uncaught Invariant Violation: addComponentAsRefTo(...): Only a ReactOwner can have refs. You might be adding a ref to a component that was not created inside a component's `render` method, or you have multiple copies of React loaded
Die Forschung zeigt mögliche Ursachen dafür, und beide scheinen nicht das Problem zu sein.
Nur ReactOwner können Refs
haben diese die wahrscheinlichste Ursache ist mit reagieren auf meine Fremdheit zu tun. Ich habe einen Container gerendert und dann ein Select-Element in den Container gerendert.
-Code
var React = require('react');
var first_container = React.createClass({
render: function() {
return (
<div id='first-container' className='jumbotron'>
<div className='row'>
<button type='button' className='btn btn-primary'>Submit Query</button>
</div>
</div>
);
}
});
var product_selections = React.createClass({
handleChange: function() {
console.log("hello");
},
componentDidMount: function(){
$(this.refs['product-select']).select2({
change: this.handleChange
});
},
render: function() {
return (
<div className='row'>
<br/>
<label htmlFor='product-dropdown'>
Product
<br/>
<select ref='product-select' className='js-example-basic-multiple js-states form-control' id='product-dropdown' multiple='multiple'>
</select>
</label>
</div>
);
}
});
Sie versuchen, eine ref zu einem Element hinzuzufügen, die außerhalb einer Komponente render() Funktion erstellt wird.
Die Ref ist innerhalb der Render-Funktion definiert, so dass es nicht das Problem scheint. Könnte es sein, dass diese Komponente zu einer anderen Komponente hinzugefügt wird?
Mehrere Kopien von React
npm ls | grep react
├─┬ [email protected]
├── [email protected]
├── [email protected] extraneous
├── [email protected]
├─┬ [email protected]
│ ├─┬ [email protected]
Es scheint nicht ein Duplikat Paket zu sein? Irgendwelche Ideen, was hier passieren könnte?
Bitte geben Sie keine identischen Antworten auf mehrere Fragen. Post eine gute Antwort, dann vote/flag, um die andere zu schließen Fragen als Duplikate Wenn die Frage kein Duplikat ist, * schneide deine Antworten auf die Frage. * –