Merge pull request #3802 from spicyj/cleaner-depr
Better warning messages for deprecated methods
This commit is contained in:
commit
a6d03f36a4
|
@ -98,20 +98,38 @@ ReactComponent.prototype.forceUpdate = function(callback) {
|
|||
*/
|
||||
if (__DEV__) {
|
||||
var deprecatedAPIs = {
|
||||
getDOMNode: 'getDOMNode',
|
||||
isMounted: 'isMounted',
|
||||
replaceProps: 'replaceProps',
|
||||
replaceState: 'replaceState',
|
||||
setProps: 'setProps'
|
||||
getDOMNode: [
|
||||
'getDOMNode',
|
||||
'Use React.findDOMNode(component) instead.'
|
||||
],
|
||||
isMounted: [
|
||||
'isMounted',
|
||||
'Instead, make sure to clean up subscriptions and pending requests in ' +
|
||||
'componentWillUnmount to prevent memory leaks.'
|
||||
],
|
||||
replaceProps: [
|
||||
'replaceProps',
|
||||
'Instead, call React.render again at the top level.'
|
||||
],
|
||||
replaceState: [
|
||||
'replaceState',
|
||||
'Refactor your code to use setState instead (see ' +
|
||||
'https://github.com/facebook/react/issues/3236).'
|
||||
],
|
||||
setProps: [
|
||||
'setProps',
|
||||
'Instead, call React.render again at the top level.'
|
||||
]
|
||||
};
|
||||
var defineDeprecationWarning = function(methodName, displayName) {
|
||||
var defineDeprecationWarning = function(methodName, info) {
|
||||
try {
|
||||
Object.defineProperty(ReactComponent.prototype, methodName, {
|
||||
get: function() {
|
||||
warning(
|
||||
false,
|
||||
'%s(...) is deprecated in plain JavaScript React classes.',
|
||||
displayName
|
||||
'%s(...) is deprecated in plain JavaScript React classes. %s',
|
||||
info[0],
|
||||
info[1]
|
||||
);
|
||||
return undefined;
|
||||
}
|
||||
|
|
|
@ -373,7 +373,8 @@ describe('ReactES6Class', function() {
|
|||
expect(() => instance.replaceProps({name: 'bar'})).toThrow();
|
||||
expect(console.error.calls.length).toBe(5);
|
||||
expect(console.error.calls[0].args[0]).toContain(
|
||||
'getDOMNode(...) is deprecated in plain JavaScript React classes'
|
||||
'getDOMNode(...) is deprecated in plain JavaScript React classes. ' +
|
||||
'Use React.findDOMNode(component) instead.'
|
||||
);
|
||||
expect(console.error.calls[1].args[0]).toContain(
|
||||
'replaceState(...) is deprecated in plain JavaScript React classes'
|
||||
|
|
Loading…
Reference in New Issue