From 726776986d837504aad2728219e7a46cfe8d6c2a Mon Sep 17 00:00:00 2001 From: Lochlan Bunn Date: Wed, 18 Dec 2019 23:40:11 +0000 Subject: [PATCH] Fix support for default context value Issue here was that the mangled "_defaultValue" prop wasn't being used. --- src/index.js | 4 ++-- test/context.js | 17 +++++++++++++++++ 2 files changed, 19 insertions(+), 2 deletions(-) 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
+ `); + }); });