From 5eada636f8bcf4fe95e2d8cea41918ba4b54730b Mon Sep 17 00:00:00 2001 From: frontman-git Date: Wed, 11 Jun 2025 12:42:09 +0900 Subject: [PATCH] fix(compat): add .render property referencing original render function --- compat/src/forwardRef.js | 2 +- compat/test/browser/forwardRef.test.js | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/compat/src/forwardRef.js b/compat/src/forwardRef.js index 25791285b9..bb2c837e18 100644 --- a/compat/src/forwardRef.js +++ b/compat/src/forwardRef.js @@ -36,7 +36,7 @@ export function forwardRef(fn) { // It expects an object here with a `render` property, // and prototype.render will fail. Without this // mobx-react throws. - Forwarded.render = Forwarded; + Forwarded.render = fn; Forwarded.prototype.isReactComponent = Forwarded._forwarded = true; Forwarded.displayName = 'ForwardRef(' + (fn.displayName || fn.name) + ')'; diff --git a/compat/test/browser/forwardRef.test.js b/compat/test/browser/forwardRef.test.js index f69d5ae014..241608b177 100644 --- a/compat/test/browser/forwardRef.test.js +++ b/compat/test/browser/forwardRef.test.js @@ -499,4 +499,15 @@ describe('forwardRef', () => { expect(actual).to.equal(null); }); + + // Issue #4769 + it('should attach .render pointing to the original render function', () => { + function Foo(props, ref) { + return
; + } + + const Forwarded = forwardRef(Foo); + + expect(Forwarded.render).to.equal(Foo); + }); });