I think it is a bug.

Git with example - https://github.com/axules/react-context-research
> npm i
npm start
go to http://localhost:3003

**Dependencies**
React v16.3.2
Chrome v65.0.3325.181

### Components
Context - OrderDetailsContext
Root component - OrdersView
Simple component - OrdersViewRow 
Subscribed component - OrderDetailsView

### Problem
Application have one dynamic context (OrderDetailsContext) and 3 components: one root component (OrdersView) and 2 children components (OrdersViewRow and OrderDetailsView). Only one component (OrderDetailsView) subscribed to dynamic context and have to be refreshed once context data is changed. But with them we have problem.
When context is changed the subscribed component is not refreshed and have old version of context data.

#### actual
OrderDetailsView do not update once context is updated.

#### expected
OrderDetailsView will update once context is updated.

### First solution
Go to OrdersView and move OrderDetailsView to the top of render function, then subscribed component will be updated when context is changed.
![image](https://user-images.githubusercontent.com/20991327/39345798-42d1dd14-49f3-11e8-8d45-ac29bd50204f.png)

### Second strange solution
Go to separeted component (OrdersViewRow) and just remove `<td>Remove this td and I will work!</td>`, then subscribed component will be updated when context is changed.

### Video
https://youtu.be/WET0a2hApwM

### Reproduce

1. Clone https://github.com/axules/react-context-research.git
1. npm i
1. npm start
1. Open http://localhost:3003 in Chrome
1. Open dev tools in Chrome
1. Click on View button

#### expected
* 'Loading...' text should be visibled and hidden after.
* Text should be updated and new number should be displayed.
* console log should be
![image](https://user-images.githubusercontent.com/20991327/39346895-073bc6c4-49f9-11e8-85c9-1f085208bcb3.png)

#### actual
* 'Loading...' text is not visibled.
* Text is not changed.
* console log is
![image](https://user-images.githubusercontent.com/20991327/39346859-e5877f46-49f8-11e8-95a6-38b0fe492e5e.png)

assertConsistentTree(finalExpectedValues);
      }
      return {simulate};
    }
    it('hard-coded tests', () => {
      const {simulate} = ContextSimulator(5);
      simulate('randomSeed', [flush(3), update('A', 4)]);
    });
    it('generated tests', () => {
      const {simulate} = ContextSimulator(5);
      const LIMIT = 100;
      for (let i = 0; i < LIMIT; i++) {
        const seed = Math.random()
          .toString(36)
          .substr(2, 5);
        const actions = randomActions(5);
        try {
          simulate(seed, actions);
        } catch (error) {
          console.error(`
Context fuzz tester error! Copy and paste the following line into the test suite:
  simulate('${seed}', ${actions.join(', ')});
`);
          throw error;
        }
      }
    });
  });
});