2014-12-03 32 views
6

Tôi đang cố sử dụng thuộc tính ref bằng React. Tôi gặp lỗi lạ trong trình duyệt của mình và tôi không thể tìm ra vấn đề là gì. bất cứ ai có thể giải thích cho tôi tại sao tôi nhận được lỗi này:Lỗi phản hồi 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.

khi tôi có mã này:

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

Bạn đang cố gắng thực hiện một href? Nếu không, bạn có thể giải thích mục đích của bạn với ref là gì không? – magnudae

+0

Cảm ơn bạn đã trả lời, nhưng tôi không cố gắng sử dụng href. Tôi đang làm theo [hướng dẫn] này (http://facebook.github.io/react/docs/more-about-refs.html) về cách sử dụng thuộc tính ref, nhưng không thành công. – John

+2

Ok, tôi đã tự mình thử một chút. Có vẻ như vấn đề là h1 được thiết lập là phần tử hàng đầu, cha mẹ của tất cả. Điều này có nghĩa rằng ref là dư thừa vì không có gì bên ngoài cần ref. Đây là những gì thông báo lỗi đang cố gắng nói. Hãy thử mở rộng ví dụ của bạn như ví dụ trong hướng dẫn. – magnudae

Trả lời

0

Mã của bạn là đúng.

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

Theo thông báo lỗi, bạn đang đặt một ref trên một yếu tố un nước, nhưng trong các mã mà bạn cung cấp các h1 thuộc sở hữu của App. Mã của bạn có khác với mã bạn dán ở trên không?

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

Tôi không biết tại sao ví dụ của tôi không hoạt động. Tôi đã bắt đầu lại từ đầu, và sau đó tôi đã có thể sử dụng thẻ ref. – John

+0

@ John vui vì nó đã hoạt động! –

0

Câu trả lời này có thể giúp bạn visit, hãy kiểm tra mã của bạn một cách cẩn thận để nhắm vào hai câu hỏi này, lỗi của tôi là do một thứ hai.
Trong mã của tôi, tôi đã viết require("React") require("React-dom"), thực sự nó là require('react'), tôi đã sửa đổi mã của mình, nó hoạt động. Tất cả các lỗi đều do hai yếu tố gây ra. Chỉ cần kiểm tra mã của bạn hoàn toàn.

+0

Cảm ơn lời khuyên. Như đã đề cập trong một nhận xét trước, tôi đã bắt đầu một dự án mới để giải quyết vấn đề, vì vậy tôi không thể xác nhận câu trả lời của bạn. – John

Các vấn đề liên quan