contextType apparently not working in dev mode server side rendering
See original GitHub issueDo you want to request a feature or report a bug? Bug
What is the current behavior?
Crash during server render due to this.context
being undefined. Bug only happens in SSR, and only in dev mode react. Issue appears neither in browser renders, nor in production mode server renders.
note: Using https://reactjs.net/ for c# server-side rendering, with bundled-in version of react disabled (so using the same version of react as the client bundle)
(simplified) application structure
// root component
const {Provider, Consumer} = createContext({});
const Root = props => return <Provider value={props.notNull}>{props.children}</Provider>;
// consumer
class ConsumingComponent extends Component {
static contextType = Consumer;
render() {
if (this.context.someValue) return null;
return <div/>;
}
}
// render tree
<Root>...<ConsumingComponent/>...</Root>
// output of server render
JsRuntimeException: TypeError: unable to get property 'someValue' of undefined or null reference.
What is the expected behavior?
this.context
in the consuming component should be the value passed to the Provider, and not undefined
.
Which versions of React, and which browser / OS are affected by this issue? Did this work in previous versions of React?
The bug, as best as I can pin down, appeared in 16.6.3. The code works in 16.6…1, and 16.6.2 is listed as a broken release in the changelog.
Issue Analytics
- State:
- Created 5 years ago
- Comments:8 (5 by maintainers)
@gaearon we currently warn only when passing
Context.Provider
, should we extend that to also warn forContext.Consumer
?@hamlim Good catch.