diff --git a/package.json b/package.json index adcdf57a5db50e77d248e1c0fd3cd9051d278aff..c174d5a4ee9575d921cbc27a69456e0abd5c7920 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 8db02a7c1428eacd6161b1d2d030aea6532acc87..b1d6ec02db412e6f772a6c42c486a7d91b1d60c9 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 ab3c1f099f34a14513559f0a6c734a74c1450a15..ce07ba116bdd8bf4da5666a7c81907903abef3ff 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 008f741b96509a1390637a06fc57cd69790fabc1..64b244dd65d50a0f2ea4b214818779c7c7455e6c 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 c4bd75d480cc336774f62386f8402a3b98484edf..44f473fab638e28413d63b3ad2dcbbbe22c95b20 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>