From cb7dc93a53c5e7674389eb6ef2fa8de01b25dc52 Mon Sep 17 00:00:00 2001 From: Yangshun Tay Date: Mon, 29 Apr 2019 23:06:25 -0700 Subject: [PATCH] feat(v2): create useDocusaurusContext (#1418) --- .../lib/client/exports/useDocusaurusContext.js | 15 +++++++++++++++ .../lib/default-theme/BlogPage/index.js | 8 +++++--- .../lib/default-theme/BlogPost/index.js | 13 ++++++++----- .../docusaurus/lib/default-theme/Doc/index.js | 8 ++++---- .../lib/default-theme/Markdown/index.js | 8 ++++---- .../docusaurus/lib/default-theme/Navbar/index.js | 7 ++++--- .../docusaurus/lib/default-theme/Pages/index.js | 9 +++++---- 7 files changed, 45 insertions(+), 23 deletions(-) create mode 100644 packages/docusaurus/lib/client/exports/useDocusaurusContext.js diff --git a/packages/docusaurus/lib/client/exports/useDocusaurusContext.js b/packages/docusaurus/lib/client/exports/useDocusaurusContext.js new file mode 100644 index 0000000000..b33025d038 --- /dev/null +++ b/packages/docusaurus/lib/client/exports/useDocusaurusContext.js @@ -0,0 +1,15 @@ +/** + * Copyright (c) 2017-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +import {useContext} from 'react'; +import DocusaurusContext from '@docusaurus/context'; + +function useDocusaurusContext() { + return useContext(DocusaurusContext); +} + +export default useDocusaurusContext; diff --git a/packages/docusaurus/lib/default-theme/BlogPage/index.js b/packages/docusaurus/lib/default-theme/BlogPage/index.js index f24dfab35a..361e593c9a 100644 --- a/packages/docusaurus/lib/default-theme/BlogPage/index.js +++ b/packages/docusaurus/lib/default-theme/BlogPage/index.js @@ -5,15 +5,17 @@ * LICENSE file in the root directory of this source tree. */ -import React, {useContext} from 'react'; +import React from 'react'; + import Head from '@docusaurus/Head'; +import useDocusaurusContext from '@docusaurus/useDocusaurusContext'; // eslint-disable-line + import Footer from '@theme/Footer'; // eslint-disable-line import Layout from '@theme/Layout'; // eslint-disable-line -import DocusaurusContext from '@docusaurus/context'; import Post from '../Post'; function BlogPage(props) { - const context = useContext(DocusaurusContext); + const context = useDocusaurusContext(); const {language, siteConfig = {}} = context; const {baseUrl, favicon} = siteConfig; const { diff --git a/packages/docusaurus/lib/default-theme/BlogPost/index.js b/packages/docusaurus/lib/default-theme/BlogPost/index.js index 73b119737f..6757970e5f 100644 --- a/packages/docusaurus/lib/default-theme/BlogPost/index.js +++ b/packages/docusaurus/lib/default-theme/BlogPost/index.js @@ -5,18 +5,21 @@ * LICENSE file in the root directory of this source tree. */ -import React, {useContext} from 'react'; +import React from 'react'; import Head from '@docusaurus/Head'; +import useDocusaurusContext from '@docusaurus/useDocusaurusContext'; // eslint-disable-line + import Layout from '@theme/Layout'; // eslint-disable-line import Footer from '@theme/Footer'; // eslint-disable-line -import DocusaurusContext from '@docusaurus/context'; + import Post from '../Post'; function BlogPost(props) { - const {metadata: contextMetadata = {}, siteConfig = {}} = useContext( - DocusaurusContext, - ); + const { + metadata: contextMetadata = {}, + siteConfig = {}, + } = useDocusaurusContext(); const {baseUrl, favicon} = siteConfig; const {language, title} = contextMetadata; const {content, metadata} = props; diff --git a/packages/docusaurus/lib/default-theme/Doc/index.js b/packages/docusaurus/lib/default-theme/Doc/index.js index f50d9da10c..defba6f51c 100644 --- a/packages/docusaurus/lib/default-theme/Doc/index.js +++ b/packages/docusaurus/lib/default-theme/Doc/index.js @@ -5,19 +5,19 @@ * LICENSE file in the root directory of this source tree. */ -import React, {useContext} from 'react'; +import React from 'react'; import {renderRoutes} from 'react-router-config'; + import Head from '@docusaurus/Head'; +import useDocusaurusContext from '@docusaurus/useDocusaurusContext'; // eslint-disable-line import Layout from '@theme/Layout'; // eslint-disable-line import Footer from '@theme/Footer'; // eslint-disable-line import Navbar from '@theme/Navbar'; // eslint-disable-line import Sidebar from '@theme/Sidebar'; // eslint-disable-line -import DocusaurusContext from '@docusaurus/context'; - function Doc(props) { - const {siteConfig = {}} = useContext(DocusaurusContext); + const {siteConfig = {}} = useDocusaurusContext(); const {route, docsMetadata, location} = props; const {baseUrl, favicon} = siteConfig; return ( diff --git a/packages/docusaurus/lib/default-theme/Markdown/index.js b/packages/docusaurus/lib/default-theme/Markdown/index.js index bf4720bde9..0adc4b9109 100644 --- a/packages/docusaurus/lib/default-theme/Markdown/index.js +++ b/packages/docusaurus/lib/default-theme/Markdown/index.js @@ -5,13 +5,13 @@ * LICENSE file in the root directory of this source tree. */ -import React, {useContext} from 'react'; -import Head from '@docusaurus/Head'; +import React from 'react'; -import DocusaurusContext from '@docusaurus/context'; +import Head from '@docusaurus/Head'; +import useDocusaurusContext from '@docusaurus/useDocusaurusContext'; function Markdown(props) { - const context = useContext(DocusaurusContext); + const context = useDocusaurusContext(); const {siteConfig} = context; const highlight = Object.assign( {}, diff --git a/packages/docusaurus/lib/default-theme/Navbar/index.js b/packages/docusaurus/lib/default-theme/Navbar/index.js index b502679734..cc92ba5ada 100644 --- a/packages/docusaurus/lib/default-theme/Navbar/index.js +++ b/packages/docusaurus/lib/default-theme/Navbar/index.js @@ -5,14 +5,15 @@ * LICENSE file in the root directory of this source tree. */ -import React, {useContext} from 'react'; +import React from 'react'; import Link from '@docusaurus/Link'; +import useDocusaurusContext from '@docusaurus/useDocusaurusContext'; + import Search from '@theme/Search'; -import DocusaurusContext from '@docusaurus/context'; function Navbar(props) { - const context = useContext(DocusaurusContext); + const context = useDocusaurusContext(); const {siteConfig = {}, env = {}, metadata = {}} = context; // TODO: navbar headerlinks should depends on theme, not siteConfig; const { diff --git a/packages/docusaurus/lib/default-theme/Pages/index.js b/packages/docusaurus/lib/default-theme/Pages/index.js index ba26a08e7a..26f5845b8c 100644 --- a/packages/docusaurus/lib/default-theme/Pages/index.js +++ b/packages/docusaurus/lib/default-theme/Pages/index.js @@ -5,15 +5,16 @@ * LICENSE file in the root directory of this source tree. */ -import React, {useContext} from 'react'; +import React from 'react'; + import Head from '@docusaurus/Head'; // eslint-disable-line +import useDocusaurusContext from '@docusaurus/useDocusaurusContext'; // eslint-disable-line + import Footer from '@theme/Footer'; // eslint-disable-line import Layout from '@theme/Layout'; // eslint-disable-line -import DocusaurusContext from '@docusaurus/context'; - function Pages({content}) { - const context = useContext(DocusaurusContext); + const context = useDocusaurusContext(); const {metadata = {}, siteConfig = {}} = context; const {baseUrl, favicon} = siteConfig; const {language} = metadata;