<!--
  Note: if the issue is about documentation or the website, please file it at:
  https://github.com/reactjs/reactjs.org/issues/new
-->

**Do you want to request a *feature* or report a *bug*?**
bug
**What is the current behavior?**
example: https://codesandbox.io/s/04393o3k6w
If the `LogProps` is child of `M.Provider`, and `M.Consumer` is used in its children.
When the `M.Provider` is updating, even if the `LogProps` is wrapped in a component that  never updates, it can still be triggered by the callback of `React.forwardRef`, and updates the `LogProps`.

**What is the expected behavior?**
the `LogProps` shouldn't update when the root component had updated, whether or not  `M.Consumer` is used in its children;

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

it's used react@16.3

HostPortal,
  CallComponent,
  CallHandlerPhase,
  ReturnComponent,
  ForwardRef,
  Fragment,
  Mode,
  ContextProvider,
  ContextConsumer,
} from 'shared/ReactTypeOfWork';
import {
  NoEffect,
  PerformedWork,
  Placement,
  ContentReset,
  Ref,
  DidCapture,
} from 'shared/ReactTypeOfSideEffect';
import {ReactCurrentOwner} from 'shared/ReactGlobalSharedState';
import {
  enableGetDerivedStateFromCatch,
  debugRenderPhaseSideEffects,
  debugRenderPhaseSideEffectsForStrictMode,
} from 'shared/ReactFeatureFlags';
import invariant from 'fbjs/lib/invariant';
import getComponentName from 'shared/getComponentName';
import warning from 'fbjs/lib/warning';
import ReactDebugCurrentFiber from './ReactDebugCurrentFiber';
import {cancelWorkTimer} from './ReactDebugFiberPerf';
import ReactFiberClassComponent, {