From aa92f7489a25c1b7490e21cade7db4be8dd8a8a1 Mon Sep 17 00:00:00 2001 From: Dan Abramov Date: Wed, 14 Dec 2016 02:21:03 +0000 Subject: [PATCH] Warn on passing different props to super() --- scripts/fiber/tests-passing-except-dev.txt | 1 - scripts/fiber/tests-passing.txt | 1 + src/renderers/shared/fiber/ReactFiberClassComponent.js | 8 ++++++++ 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/scripts/fiber/tests-passing-except-dev.txt b/scripts/fiber/tests-passing-except-dev.txt index 2fd5a6792a9ec..3ca34eebd493b 100644 --- a/scripts/fiber/tests-passing-except-dev.txt +++ b/scripts/fiber/tests-passing-except-dev.txt @@ -146,7 +146,6 @@ src/renderers/shared/shared/__tests__/ReactCompositeComponent-test.js * should warn about `forceUpdate` on unmounted components * should warn about `setState` on unmounted components * should disallow nested render calls -* should warn when mutated props are passed src/renderers/shared/shared/__tests__/ReactMultiChild-test.js * should warn for duplicated keys with component stack info diff --git a/scripts/fiber/tests-passing.txt b/scripts/fiber/tests-passing.txt index 17251177b87af..b68d9c2602327 100644 --- a/scripts/fiber/tests-passing.txt +++ b/scripts/fiber/tests-passing.txt @@ -1333,6 +1333,7 @@ src/renderers/shared/shared/__tests__/ReactCompositeComponent-test.js * should replace state * should support objects with prototypes as state * should not warn about unmounting during unmounting +* should warn when mutated props are passed * should only call componentWillUnmount once src/renderers/shared/shared/__tests__/ReactCompositeComponentDOMMinimalism-test.js diff --git a/src/renderers/shared/fiber/ReactFiberClassComponent.js b/src/renderers/shared/fiber/ReactFiberClassComponent.js index 79a6a9ebc9ef0..79595dd152d7c 100644 --- a/src/renderers/shared/fiber/ReactFiberClassComponent.js +++ b/src/renderers/shared/fiber/ReactFiberClassComponent.js @@ -180,6 +180,14 @@ module.exports = function(scheduleUpdate : (fiber: Fiber) => void) { 'componentWillRecieveProps(). Did you mean componentWillReceiveProps()?', name ); + const hasMutatedProps = instance.props !== workInProgress.pendingProps; + warning( + instance.props === undefined || !hasMutatedProps, + '%s(...): When calling super() in `%s`, make sure to pass ' + + 'up the same props that your component\'s constructor was passed.', + name, + name + ); } const state = instance.state;