Tôi thấy rằng React.forwardRef dường như là cách bị xử phạt khi chuyển một ref cho một thành phần chức năng con, từ các tài liệu phản ứng:
const FancyButton = React.forwardRef((props, ref) => (
<button ref={ref} className="FancyButton">
{props.children}
</button>
));
// You can now get a ref directly to the DOM button:
const ref = React.createRef();
<FancyButton ref={ref}>Click me!</FancyButton>;
Tuy nhiên, lợi thế của việc này là gì khi chỉ đơn giản là vượt qua một chỗ dựa tùy chỉnh?:
const FancyButton = ({ innerRef }) => (
<button ref={innerRef} className="FancyButton">
{props.children}
</button>
));
const ref = React.createRef();
<FancyButton innerRef={ref}>Click me!</FancyButton>;
Lợi thế duy nhất tôi có thể nghĩ đến là có thể có một api phù hợp cho các ref, nhưng có lợi thế nào khác không? Việc vượt qua một prop tùy chỉnh có ảnh hưởng đến sự khác biệt khi kết xuất và gây ra kết xuất bổ sung, chắc chắn không phải là ref được lưu trữ dưới dạng trạng thái có thể thay đổi trong current
trường không?
Ví dụ, bạn muốn vượt qua nhiều ref (mà tbh, có thể chỉ ra mùi mã, nhưng vẫn vậy), thì giải pháp duy nhất tôi có thể thấy là sử dụng các đạo cụ customRef.
Tôi đoán câu hỏi của tôi là giá trị của việc sử dụng forwardRef
trên một prop tùy chỉnh là gì?