From 011c880ffebf86b5edb46362237bda7fea4d1526 Mon Sep 17 00:00:00 2001 From: Nishchay Kaushik <kaushiknishchay@gmail.com> Date: Mon, 2 Nov 2020 12:45:34 +0530 Subject: [PATCH] fix: use new context api (#37) * fix: use the newer context api * chore: remove prop-types usage and dependency --- package.json | 8 +++----- src/index.js | 4 ++-- src/meta_tags.js | 7 +++---- src/meta_tags_context.js | 29 ++++++++++++++++++----------- src/react_title.js | 4 ---- 5 files changed, 26 insertions(+), 26 deletions(-) diff --git a/package.json b/package.json index adcdf57..c174d5a 100644 --- a/package.json +++ b/package.json @@ -65,10 +65,8 @@ "webpack-dev-server": "^3.1.7" }, "peerDependencies": { - "react": "^0.14 || ^15.0.0 || ^ 16.0.0", - "react-dom": "^0.14 || ^15.0.0 || ^ 16.0.0" + "react": "^16.0.0", + "react-dom": "^16.0.0" }, - "dependencies": { - "prop-types": "^15.6.0" - } + "dependencies": {} } diff --git a/src/index.js b/src/index.js index 8db02a7..b1d6ec0 100644 --- a/src/index.js +++ b/src/index.js @@ -1,6 +1,6 @@ -import MetaTagsContext from './meta_tags_context'; +import MetaTagsContext, {MetaContext} from './meta_tags_context'; import MetaTags from './meta_tags'; import ReactTitle from './react_title'; export default MetaTags; -export {MetaTags, MetaTagsContext, ReactTitle}; +export {MetaContext, MetaTags, MetaTagsContext, ReactTitle}; diff --git a/src/meta_tags.js b/src/meta_tags.js index ab3c1f0..ce07ba1 100644 --- a/src/meta_tags.js +++ b/src/meta_tags.js @@ -1,14 +1,13 @@ import React, {Component} from 'react'; -import PropTypes from 'prop-types'; import ReactDOM from 'react-dom'; import {getDuplicateTitle, getDuplicateCanonical, getDuplicateMeta, appendChild, removeChild} from './utils'; +import { MetaContext } from './meta_tags_context'; /** An wrapper component to wrap element which need to shifted to head **/ class MetaTags extends Component { - static contextTypes = { - extract: PropTypes.func - }; + static contextTypes = MetaContext; + componentDidMount() { this.temporaryElement = document.createElement('div'); this.handleChildrens(); diff --git a/src/meta_tags_context.js b/src/meta_tags_context.js index 008f741..64b244d 100644 --- a/src/meta_tags_context.js +++ b/src/meta_tags_context.js @@ -1,17 +1,24 @@ -import {Component, Children} from 'react'; -import PropTypes from 'prop-types'; +import React, {Component, Children, createContext} from 'react'; + +const MetaContext = createContext({ + extract: () => {}, +}); /** context class which passes extract fuunction to MetaTags Component **/ -class MetaTagsContext extends Component { - static childContextTypes = { - extract: PropTypes.func - } - getChildContext() { - return {extract: this.props.extract}; - } +class MetaContextProviderWrapper extends Component { render() { - return Children.only(this.props.children); + return ( + <MetaContext.Provider + value={{ + extract: this.props.extract, + }} + > + {Children.only(this.props.children)} + </MetaContext.Provider> + ); } } -export default MetaTagsContext; +export {MetaContext}; + +export default MetaContextProviderWrapper; diff --git a/src/react_title.js b/src/react_title.js index c4bd75d..44f473f 100644 --- a/src/react_title.js +++ b/src/react_title.js @@ -1,11 +1,7 @@ import React, {Component} from 'react'; -import PropTypes from 'prop-types'; import MetaTags from './meta_tags'; class ReactTitle extends Component { - static propTypes = { - title: PropTypes.string - } render() { return (<MetaTags> <title> -- GitLab