2014-12-03 2 views
6

Я пытаюсь использовать свойство ref с использованием React. Я получаю странную ошибку в моем браузере, и я не могу понять, в чем проблема. Может кто-нибудь объяснить мне, почему я получаю эту ошибку:Ref error 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.

, когда у меня есть этот код:

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

Вы пытаетесь сделать href? Если нет, можете ли вы объяснить, какова ваша цель с помощью ref? – magnudae

+0

Спасибо за ответ, но я не пытаюсь использовать href. Я следую этому [учебнику] (http://facebook.github.io/react/docs/more-about-refs.html) о том, как использовать свойство ref, но без успеха. – John

+2

Хорошо, я попробовал немного самостоятельно. Похоже, проблема заключается в том, что h1 устанавливается как верхний элемент, родительский для всех. Это означает, что ref избыточен, так как нет ничего, что требует ref. Это то, что пытается сообщить сообщение об ошибке. Попытайтесь расширить свой пример, как в учебнике. – magnudae

ответ

0

Ваш код является правильным.

Рабочая 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 
); 

Согласно сообщению об ошибке, вы размещение рефов на ООН, принадлежащий элемент, но в коде, при условии, что h1 принадлежат App. Ваш код отличается от того, что вы вставили выше?

Примечание (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

Я не знаю, почему мой пример не сработал. Я закончил с начала, и затем я смог использовать тег ref. – John

+0

@ Джон рад, что это сработало! –

0

Этот ответ может помочь вам visit, проверить ваш код тщательно целиться на эти два вопроса, моя ошибка вызвана последней.
В моем коде я написал require("React") require("React-dom"), на самом деле это require('react'), я изменил свой код, он сработал. Все ошибки вызваны двумя факторами. Просто проверьте свой код полностью.

+0

Спасибо за совет. Как упоминалось в предыдущем комментарии, я закончил создание нового проекта для решения проблемы, поэтому я не могу подтвердить ваш ответ. – John

Смежные вопросы