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

**What is the current behavior?**
Page load throws console error: `Warning: Stateless function components cannot be given refs. Attempts to access this ref will fail.null`

```
// Chrome console
6VM598:27 Warning: Stateless function components cannot be given refs. Attempts to access this ref will fail.null
window.console.error @ VM598:27
printWarning @ warning.js:36
warning @ warning.js:60
mountIndeterminateComponent @ react-dom.development.js:10488
beginWork @ react-dom.development.js:10647
performUnitOfWork @ react-dom.development.js:12621
workLoop @ react-dom.development.js:12730
callCallback @ react-dom.development.js:1319
invokeGuardedCallbackDev @ react-dom.development.js:1358
invokeGuardedCallback @ react-dom.development.js:1215
performWork @ react-dom.development.js:12848
batchedUpdates @ react-dom.development.js:13292
performFiberBatchedUpdates @ react-dom.development.js:1666
stackBatchedUpdates @ react-dom.development.js:1657
batchedUpdates @ react-dom.development.js:1671
batchedUpdatesWithControlledComponents @ react-dom.development.js:1684
dispatchEvent @ react-dom.development.js:1894
```

**What is the expected behavior?**
No console error. Or at least some way to trace which is the stateless component that is causing the issue.

**Which versions of React, and which browser / OS are affected by this issue? Did this work in previous versions of React?**
`"react": "^16.0.0-rc.3",`
`Chrome Version 60.0.3112.113 (Official Build) (64-bit)`
`macOS Sierra 10.12.6`


- This error only started to appear after upgrading from React 15 -> 16.
failedBoundaries = new Set();
      }
      failedBoundaries.add(boundary);
       This method is unsafe outside of the begin and complete phases.
       We might be in the commit phase when an error is captured.
       The risk is that the return path from this Fiber may not be accurate.
       That risk is acceptable given the benefit of providing users more context.
      const componentStack = getStackAddendumByWorkInProgressFiber(failedWork);
      const componentName = getComponentName(failedWork);
       Add to the collection of captured errors. This is stored as a global
       map of errors and their component stack location keyed by the boundaries
       that capture them. We mostly use this Map as a Set; it's a Map only to
       avoid adding a field to Fiber to store the error.
      if (capturedErrors === null) {
        capturedErrors = new Map();
      }
      const capturedError = {
        componentName,
        componentStack,
        error,
        errorBoundary: errorBoundaryFound ? boundary.stateNode : null,
        errorBoundaryFound,
        errorBoundaryName,
        willRetry,
      };
      capturedErrors.set(boundary, capturedError);
      try {
        logCapturedError(capturedError);
      } catch (e) {