title: Using forwardRef with proptypes and eslint
body: <p>I am trying to use forwardRef for a Button in a project using <a href="https://www.npmjs.com/package/eslint" rel="noreferrer">eslint</a> and <a href="https://www.npmjs.com/package/prop-types" rel="noreferrer">prop-types</a>.</p>
  
  <p>This is what I tried so far, and the errors I get each time:</p>
  
  <h2>First attempt</h2>
  
  <pre class="lang-js prettyprint-override"><code>function Button ({ action = { callback: () =&gt; {}, title: 'unknown' } }, ref) {
    return (&lt;button ref={ref} onClick={action.callback} title={action.description} type="button"&gt;{action.icon || action.title}&lt;/button&gt;)
  }
  
  Button.propTypes = {
    action: Action.isRequired
  }
  
  export default forwardRef(Button)
  </code></pre>
  
  <p>This will give me the following warning in the console: <code>Warning: forwardRef render functions do not support propTypes or defaultProps. Did you accidentally pass a React component?</code></p>
  
  <h2>Second attempt</h2>
  
  <pre class="lang-js prettyprint-override"><code>function ButtonFunction ({ action = { callback: () =&gt; {}, title: 'unknown' } }, ref) {
    return (&lt;button ref={ref} onClick={action.callback} title={action.description} type="button"&gt;{action.icon || action.title}&lt;/button&gt;)
  }
  
  const Button = forwardRef(ButtonFunction);
  
  Button.propTypes = {
    action: Action.isRequired
  }
  
  export default ButtonFunction;
  </code></pre>
  
  <p>I get: <code>action is missing in props validation</code>.</p>
  
  <h2>Third attempt</h2>
  
  <pre class="lang-js prettyprint-override"><code>const Button = forwardRef(({ action = { callback: () =&gt; {}, title: 'unknown' } }, ref) =&gt; {
    return (&lt;button ref={ref} onClick={action.callback} title={action.description} type="button"&gt;{action.icon || action.title}&lt;/button&gt;)
  });
  
  Button.propTypes = {
    action: Action.isRequired
  }
  
  export default Button;
  </code></pre>
  
  <p>This time, I get: <code>Component definition is missing display name</code>.</p>
  
  <p>So what is the correct way to do this?</p>