2014-12-03 5 views
6

Sto tentando di utilizzare la proprietà ref utilizzando React. Ottengo uno strano errore nel mio browser e non sono in grado di capire quale sia il problema. Qualcuno può spiegare a me perché io ottenere questo errore:Errore di risposta React

Error: Invariant Violation: addComponentAsRefTo(...): Only a ReactOwner can have refs. This usually means that you're trying to add a ref to a component that doesn't have an owner (that is, was not created inside of another component's render method). Try rendering this component inside of a new top-level component which will hold the ref.

quando ho questo codice:

/** 
* @jsx React.DOM 
*/ 
(function(){ 
var react = require('react'); 


var App = react.createClass({ 

    render: function() { 
     return (
      <h1 ref="myRef">This is a test</h1> 
     ); 
    } 

}); 

react.render(
    <App />, 
    document.body 
); 
}()); 
+0

Stai cercando di fare un href? In caso contrario, puoi spiegare qual è il tuo scopo con ref? – magnudae

+0

Grazie per la risposta, ma non sto cercando di usare href. Sto seguendo questo [tutorial] (http://facebook.github.io/react/docs/more-about-refs.html) su come usare la proprietà ref, ma senza successo. – John

+2

Ok, ho provato un po 'da solo. Sembra che il problema è che h1 è impostato per essere l'elemento principale, genitore di tutti. Ciò significa che il ref è ridondante poiché non c'è nulla al di fuori che abbia bisogno del ref. Questo è ciò che il messaggio di errore sta cercando di dire. Prova ad espandere il tuo esempio come quello nel tutorial. – magnudae

risposta

0

Il vostro codice è corretto.

lavoro jsFiddle: http://jsfiddle.net/reactjs/69z2wepo/

var App = React.createClass({ 

    render: function() { 
     return (
      <h1 ref="myRef">This is a test</h1> 
     ); 
    } 

}); 

React.render(
    <App />, 
    document.body 
); 

Secondo il messaggio di errore, si sta posizionando un rif su un elemento non-proprietà, ma nel codice che hai fornito il h1 è di proprietà della App. Il tuo codice è diverso da quello che hai incollato sopra?

Nota (from the docs):

In React, an owner is the component that sets the props of other components ... 
It's important to draw a distinction between the owner-ownee relationship and the parent-child relationship. 
+0

Non so perché il mio esempio non ha funzionato. Ho finito per ricominciare da capo, e poi sono stato in grado di usare il tag ref. – John

+0

@John contento che abbia funzionato! –

0

Questa risposta può aiutare a visit, controllare il codice con attenzione per mirare a queste due domande, il mio errore è causato da quest'ultimo uno.
Nel mio codice, ho scritto require("React") require("React-dom"), in realtà è require('react'), ho modificato il mio codice, ha funzionato. Tutti gli errori sono causati dai due fattori. Basta controllare il codice completamente.

+0

Grazie per il consiglio. Come menzionato in un precedente commento, ho finito per iniziare un nuovo progetto per risolvere il problema, quindi non sono in grado di confermare la tua risposta. – John