2014-12-03 23 views
6

Próbuję użyć właściwości ref przy użyciu przycisku React. Dostaję dziwny błąd w mojej przeglądarce i nie jestem w stanie ustalić, na czym polega problem. Czy ktoś może mi wyjaśnić, dlaczego ten błąd:Błąd ref. 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.

kiedy mam ten kod:

/** 
* @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

Próbujesz zrobić href? Jeśli nie, czy możesz wyjaśnić, jaki jest twój cel z ref? – magnudae

+0

Dzięki za odpowiedź, ale nie próbuję używać href. Śledzę ten [samouczek] (http://facebook.github.io/react/docs/more-about-refs.html) na temat korzystania z właściwości ref, ale bez powodzenia. – John

+2

Ok, próbowałem trochę na własną rękę. Wydaje się, że problem polega na tym, że h1 ma być najwyższym elementem, rodzicem wszystkich. Oznacza to, że ref jest zbędny, ponieważ nie ma niczego poza tym, czego potrzebuje ref. Właśnie to próbuje przekazać komunikat o błędzie. Spróbuj rozwinąć swój przykład, tak jak ten w samouczku. – magnudae

Odpowiedz

0

kod jest poprawny.

robocza 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 
); 

Zgodnie z komunikatem o błędzie, jesteś umieszczenie ref na elemencie un-owned, ale w kodzie pod warunkiem h1 jest własnością App. Czy Twój kod różni się od tego, co wkleiłeś powyżej?

Note (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

Nie wiem, dlaczego mój przykład nie zadziałał. Skończyło się na tym, że zaczynałem od początku, a następnie mogłem użyć tagu ref. – John

+0

@John cieszę się, że zadziałało! –

0

Ta odpowiedź może pomóc visit, sprawdź kod starannie celować na te dwa pytania, mój błąd jest spowodowany przez tego ostatniego.
W moim kodzie napisałem require("React") require("React-dom"), faktycznie jest to require('react'), zmodyfikowałem swój kod, zadziałało. Wszystkie błędy są spowodowane przez dwa czynniki. Po prostu sprawdź swój kod całkowicie.

+0

Dzięki za poradę. Jak już wspomniano w poprzednim komentarzu, zakończyłem pracę nad nowym projektem, aby rozwiązać problem, więc nie jestem w stanie potwierdzić Twojej odpowiedzi. – John

Powiązane problemy