Skip to content

Commit

Permalink
Improve warning for React.createClass (facebook#9781)
Browse files Browse the repository at this point in the history
* Improve warning for `React.createClass`

**what is the change?:**
- Explain that this will be removed in v16.0 specifically
- Mention the version number for the drop-in replacement module.
- Link to docs in the blog post about how to migrate

**why make this change?:**
We want to make our deprecation warnings more clear and helpful.

**test plan:**
Visual inspection and `yarn test`

**issue:**
facebook#9398

* Widen range of recommended replacement module versions

**what is the change?:**
Instead of recommending specific versions of 'prop-types' and
'create-react-class' we ask folks to use the latest available 15.* version.

**why make this change?:**
The latest version of those plugins, within the 15 version, is the most likely
to be stable. For example, we know that 'react-create-class' is broken for AMD
builds at the current latest version, so once we release a fix then the
recommended version will change.

**test plan:**
Visual inspection
Also fixed some tests.

* Fix typos and things

**what is the change?:**
- `migrade` -> `migrate`
- `15.* prop-types package` -> `v15.* prop-types package`

**why make this change?:**
Correctness

**test plan:**
`yarn test` and visual inspection
  • Loading branch information
flarnie committed Jun 7, 2017
1 parent 7427d56 commit b4c541e
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 14 deletions.
13 changes: 7 additions & 6 deletions src/isomorphic/React.js
Expand Up @@ -112,8 +112,7 @@ if (__DEV__) {
didWarnPropTypesDeprecated,
'Accessing PropTypes via the main React package is deprecated,' +
' and will be removed in React v16.0.' +
' Use the prop-types package from npm instead.' +
' Version 15.5.10 provides a drop-in replacement.' +
' Use the latest available v15.* prop-types package from npm instead.' +
' For info on usage, compatibility, migration and more, see ' +
'https://fb.me/prop-types-docs',
);
Expand All @@ -126,10 +125,12 @@ if (__DEV__) {
get: function() {
lowPriorityWarning(
warnedForCreateClass,
'React.createClass is no longer supported. Use a plain JavaScript ' +
"class instead. If you're not yet ready to migrate, " +
'create-react-class is available on npm as a temporary, ' +
'drop-in replacement.',
'Accessing createClass via the main React package is deprecated,' +
' and will be removed in React v16.0.' +
" Use a plain JavaScript class instead. If you're not yet " +
'ready to migrate, create-react-class v15.* is available ' +
'on npm as a temporary, drop-in replacement. ' +
'For more info see https://fb.me/react-create-class',
);
warnedForCreateClass = true;
return createReactClass;
Expand Down
17 changes: 9 additions & 8 deletions src/isomorphic/__tests__/React-test.js
Expand Up @@ -45,10 +45,12 @@ describe('React', () => {
expect(createClass).not.toBe(undefined);
expect(console.warn.calls.count()).toBe(1);
expect(console.warn.calls.argsFor(0)[0]).toContain(
'React.createClass is no longer supported. Use a plain ' +
"JavaScript class instead. If you're not yet ready to migrate, " +
'create-react-class is available on npm as a temporary, ' +
'drop-in replacement.',
'Warning: Accessing createClass via the main React package is ' +
'deprecated, and will be removed in React v16.0. ' +
"Use a plain JavaScript class instead. If you're not yet ready " +
'to migrate, create-react-class v15.* is available on npm as ' +
'a temporary, drop-in replacement. ' +
'For more info see https://fb.me/react-create-class',
);
});

Expand All @@ -61,10 +63,9 @@ describe('React', () => {
expect(console.warn.calls.argsFor(0)[0]).toContain(
'Warning: Accessing PropTypes via the main React package is ' +
'deprecated, and will be removed in React v16.0. ' +
'Use the prop-types package from npm instead. ' +
'Version 15.5.10 provides a drop-in replacement. ' +
'For info on usage, compatibility, migration and more, ' +
'see https://fb.me/prop-types-docs',
'Use the latest available v15.* prop-types package from ' +
'npm instead. For info on usage, compatibility, migration ' +
'and more, see https://fb.me/prop-types-docs',
);
});
});

0 comments on commit b4c541e

Please sign in to comment.