React: Warning if React.forwardRef render function doesn't take exactly two arguments is confusing when more than 2 arguments

Created on 12 Sep 2018  ·  5Comments  ·  Source: facebook/react

Do you want to request a feature or report a bug?

A feature (an improvement)

What is the current behavior?

When defining more than two parameters for a React.forwardRef render function a warning message stating "forwardRef render functions accept two parameters: props and ref. Did you forget to use the ref parameter?" gets logged.

If the current behavior is a bug, please provide the steps to reproduce and if possible a minimal demo of the problem. Your bug will get fixed much faster if we can run your code and it doesn't have dependencies other than React. Paste the link to your JSFiddle (https://jsfiddle.net/Luktwrdm/) or CodeSandbox (https://codesandbox.io/s/new) example below:

https://codesandbox.io/s/5v704qxvnx

What is the expected behavior?

Option 1

Overall the message could be more explicit on accepting exactly two parameters. Also, when the arity is greater than 2 the second part of the message may be omitted. For instance:

""forwardRef render functions accept exactly two parameters: props and ref"

Option 2

If defining more than 2 arguments to the function is ok, which may be the case since the real goal for this warning is just to make sure people use the ref parameter, I think the message could not be shown for arity > 2, therefore chaging the condition of === 2 to > 1.

Which versions of React, and which browser / OS are affected by this issue? Did this work in previous versions of React?

16.5.0 which is the one that includes this new warning

Enhancement

Most helpful comment

I think it shouldn't warn about 0 arguments.

All 5 comments

Happy to take a PR for “option 1”.

The purpose of accepting more arguments is not clear to me because they’d never get filled in.

Cool. I will make a PR tonight

We might want to add a note about an argument rest as well? forwardRef((...args) => render(...args)) also warning in a confusing manor since it's transpiled to use arguments directly

I think it shouldn't warn about 0 arguments.

Should be fixed in 16.5.1

Was this page helpful?
0 / 5 - 0 ratings