mirror of
https://github.com/facebook/react.git
synced 2025-11-01 09:12:30 +00:00
Merge pull request #3017 from syranide/trydefine
Try/catch property deprecation warnings to support IE8
This commit is contained in:
@@ -895,8 +895,10 @@ var ReactClass = {
|
||||
// Legacy hook
|
||||
Constructor.type = Constructor;
|
||||
if (__DEV__) {
|
||||
if (Object.defineProperty) {
|
||||
try {
|
||||
Object.defineProperty(Constructor, 'type', typeDeprecationDescriptor);
|
||||
} catch (x) {
|
||||
// IE will fail on defineProperty (es5-shim/sham too)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -86,14 +86,14 @@ ReactComponent.prototype.forceUpdate = function(callback) {
|
||||
* modern base class. Instead, we define a getter that warns if it's accessed.
|
||||
*/
|
||||
if (__DEV__) {
|
||||
if (Object.defineProperty) {
|
||||
var deprecatedAPIs = {
|
||||
getDOMNode: 'getDOMNode',
|
||||
isMounted: 'isMounted',
|
||||
replaceState: 'replaceState',
|
||||
setProps: 'setProps'
|
||||
};
|
||||
var defineDeprecationWarning = function(methodName, displayName) {
|
||||
var deprecatedAPIs = {
|
||||
getDOMNode: 'getDOMNode',
|
||||
isMounted: 'isMounted',
|
||||
replaceState: 'replaceState',
|
||||
setProps: 'setProps'
|
||||
};
|
||||
var defineDeprecationWarning = function(methodName, displayName) {
|
||||
try {
|
||||
Object.defineProperty(ReactComponent.prototype, methodName, {
|
||||
get: function() {
|
||||
warning(
|
||||
@@ -104,11 +104,13 @@ if (__DEV__) {
|
||||
return undefined;
|
||||
}
|
||||
});
|
||||
};
|
||||
for (var methodName in deprecatedAPIs) {
|
||||
if (deprecatedAPIs.hasOwnProperty(methodName)) {
|
||||
defineDeprecationWarning(methodName, deprecatedAPIs[methodName]);
|
||||
}
|
||||
} catch (x) {
|
||||
// IE will fail on defineProperty (es5-shim/sham too)
|
||||
}
|
||||
};
|
||||
for (var methodName in deprecatedAPIs) {
|
||||
if (deprecatedAPIs.hasOwnProperty(methodName)) {
|
||||
defineDeprecationWarning(methodName, deprecatedAPIs[methodName]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user