diff --git a/src/index.js b/src/index.js index 6b864c09..dfa9ddb3 100644 --- a/src/index.js +++ b/src/index.js @@ -86,7 +86,7 @@ function renderToString(vnode, context, opts, inner, isSvgMode, selectValue) { // the context value as `this.context` just for this component. let cxType = nodeName.contextType; let provider = cxType && context[cxType.__c]; - let cctx = cxType != null ? (provider ? provider.props.value : cxType._defaultValue) : context; + let cctx = cxType != null ? (provider ? provider.props.value : cxType.__) : context; // stateless functional components rendered = nodeName.call(vnode.__c, props, cctx); @@ -95,7 +95,7 @@ function renderToString(vnode, context, opts, inner, isSvgMode, selectValue) { // class-based components let cxType = nodeName.contextType; let provider = cxType && context[cxType.__c]; - let cctx = cxType != null ? (provider ? provider.props.value : cxType._defaultValue) : context; + let cctx = cxType != null ? (provider ? provider.props.value : cxType.__) : context; // c = new nodeName(props, context); c = vnode.__c = new nodeName(props, cctx); diff --git a/test/context.js b/test/context.js index 026911f2..50cac60c 100644 --- a/test/context.js +++ b/test/context.js @@ -96,4 +96,21 @@ describe('context', () => {
value is:
`); }); + + it('should support default context value with absent provider', () => { + const { Consumer } = createContext('correct'); + let rendered = renderJsx( + + {(value) => ( +
+ value is: {value} +
+ )} +
+ ); + + expect(rendered).to.equal(dedent` +
value is: correct
+ `); + }); });