From c04d02e5e8de18436ac95037ab856ac5ba7d29b9 Mon Sep 17 00:00:00 2001 From: Ben Alpert Date: Mon, 24 Aug 2015 16:47:19 -0700 Subject: [PATCH] Add warnings to React module --- packages/react/react.js | 53 +--------------------------------- src/React.js | 44 ++++++++++++++++++++++++++-- src/shared/utils/deprecated.js | 8 +++-- 3 files changed, 48 insertions(+), 57 deletions(-) diff --git a/packages/react/react.js b/packages/react/react.js index 699e491e11d2e..53abd6f0362d8 100644 --- a/packages/react/react.js +++ b/packages/react/react.js @@ -1,54 +1,3 @@ -/* eslint-disable comma-dangle */ 'use strict'; -var React = require('./lib/React'); - -var assign = require('./lib/Object.assign'); -var deprecated = require('./lib/deprecated'); - -// We want to warn once when any of these methods are used. -if (process.env.NODE_ENV !== 'production') { - var deprecations = { - // ReactDOM - findDOMNode: deprecated( - 'findDOMNode', - 'react-dom', - React, - React.findDOMNode - ), - render: deprecated( - 'render', - 'react-dom', - React, - React.render - ), - unmountComponentAtNode: deprecated( - 'unmountComponentAtNode', - 'react-dom', - React, - React.unmountComponentAtNode - ), - // ReactDOMServer - renderToString: deprecated( - 'renderToString', - 'react-dom/server', - React, - React.renderToString - ), - renderToStaticMarkup: deprecated( - 'renderToStaticMarkup', - 'react-dom/server', - React, - React.renderToStaticMarkup - ) - }; - // Export a wrapped object. We'll use assign and take advantage of the fact - // that this will override the original methods in React. - module.exports = assign( - {}, - React, - deprecations - ); -} else { - module.exports = React; -} +module.exports = require('./lib/React'); diff --git a/src/React.js b/src/React.js index 0f569cbeaa524..3a1f07f573d5b 100644 --- a/src/React.js +++ b/src/React.js @@ -16,12 +16,52 @@ var ReactDOMServer = require('ReactDOMServer'); var ReactIsomorphic = require('ReactIsomorphic'); var assign = require('Object.assign'); +var deprecated = require('deprecated'); var React = {}; assign(React, ReactIsomorphic); -assign(React, ReactDOM); -assign(React, ReactDOMServer); + +assign(React, { + // ReactDOM + findDOMNode: deprecated( + 'findDOMNode', + 'ReactDOM', + 'react-dom', + ReactDOM, + ReactDOM.findDOMNode + ), + render: deprecated( + 'render', + 'ReactDOM', + 'react-dom', + ReactDOM, + ReactDOM.render + ), + unmountComponentAtNode: deprecated( + 'unmountComponentAtNode', + 'ReactDOM', + 'react-dom', + ReactDOM, + ReactDOM.unmountComponentAtNode + ), + + // ReactDOMServer + renderToString: deprecated( + 'renderToString', + 'ReactDOMServer', + 'react-dom/server', + ReactDOMServer, + ReactDOMServer.renderToString + ), + renderToStaticMarkup: deprecated( + 'renderToStaticMarkup', + 'ReactDOMServer', + 'react-dom/server', + ReactDOMServer, + ReactDOMServer.renderToStaticMarkup + ), +}); React.version = '0.14.0-beta3'; diff --git a/src/shared/utils/deprecated.js b/src/shared/utils/deprecated.js index 85eb17a1e54a2..cad406834fa62 100644 --- a/src/shared/utils/deprecated.js +++ b/src/shared/utils/deprecated.js @@ -20,11 +20,12 @@ var warning = require('warning'); * * @param {string} fnName The name of the function * @param {string} newModule The module that fn will exist in + * @param {string} newPackage The module that fn will exist in * @param {*} ctx The context this forwarded call should run in * @param {function} fn The function to forward on to * @return {function} The function that will warn once and then call fn */ -function deprecated(fnName, newModule, ctx, fn) { +function deprecated(fnName, newModule, newPackage, ctx, fn) { var warned = false; if (__DEV__) { var newFn = function() { @@ -33,11 +34,12 @@ function deprecated(fnName, newModule, ctx, fn) { // Require examples in this string must be split to prevent React's // build tools from mistaking them for real requires. // Otherwise the build tools will attempt to build a '%s' module. - '`require' + '("react").%s` is deprecated. Please use `require' + '("%s").%s` ' + + 'React.%s is deprecated. Please use %s.%s from require' + '(\'%s\') ' + 'instead.', fnName, newModule, - fnName + fnName, + newPackage ); warned = true; return fn.apply(ctx, arguments);