reactjs / reactjs/react.dev

Adding ref with React.cloneElement() fails on class component with functional component error

Đang mở
#3,911 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

Chưa có ai nhận issue này.

Ngôn ngữ chính
JavaScript
Star
11.8k
Fork
7.9k
Merge trung bình
1 ngày 11 giờ
Pull request đã merge (30 ngày)
11

Mô tả

In a class component with all class component children...

constructor(props) {
  super(props);

  this.myref = React.createRef();
}

render() {

  return (
    {React.cloneElement(this.props.children[0], {ref: myref})}
  );
}

...fails with Warning: Function components cannot be given refs. Attempts to access this ref will fail. Did you mean to use React.forwardRef()?

I get that React.cloneElement() is probably returning a functional wrapper that's confusing React, but given the power of this.props.children, what is the proper way to dynamically add refs? All of the actual children are class components if that matters.

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Hướng nghiên cứu

Báo cáo nêu React.cloneElement(), React.createRef(), các component dạng class và các component dạng function, nhưng không có tệp nào trong repository hoặc điểm bắt đầu của test. Hãy bắt đầu bằng cách tái hiện cảnh báo với cấu trúc component được hiển thị và xác định liệu hành vi mong đợi là một bản sửa trong React hay một nội dung cần làm rõ trong tài liệu; được xem là hoàn tất khi có kết quả đã thống nhất, có thể tái hiện, cùng với một phương án giải quyết được ghi chép hoặc kiểm thử.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Đánh giá

Công nghệ
javascript, react
Lĩnh vực
frontend
Loại issue
Lỗi
Độ khó
4/5
Thời gian dự kiến
3-5 ngày
Mức độ hoạt động
Đình trệ
Độ rõ ràng
Cần làm rõ
Mức phù hợp với người mới
25/100

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.