mirror of
https://github.com/facebook/react.git
synced 2025-11-01 09:12:30 +00:00
Improve DX when combining react-dom/profiling and schedule/tracking (#13605)
* Added blessed production+profiling entry point for schedule/tracking * Add invariant when profiling renderer is used with non-profiling schedule/tracking
This commit is contained in:
@@ -168,6 +168,18 @@ let didWarnSetStateChildContext;
|
||||
let warnAboutUpdateOnUnmounted;
|
||||
let warnAboutInvalidUpdates;
|
||||
|
||||
if (enableSchedulerTracking) {
|
||||
// Provide explicit error message when production+profiling bundle of e.g. react-dom
|
||||
// is used with production (non-profiling) bundle of schedule/tracking
|
||||
invariant(
|
||||
__interactionsRef != null && __interactionsRef.current != null,
|
||||
'It is not supported to run the profiling version of a renderer (for example, `react-dom/profiling`) ' +
|
||||
'without also replacing the `schedule/tracking` module with `schedule/tracking-profiling`. ' +
|
||||
'Your bundler might have a setting for aliasing both modules. ' +
|
||||
'Learn more at http://fb.me/react-profiling',
|
||||
);
|
||||
}
|
||||
|
||||
if (__DEV__) {
|
||||
didWarnAboutStateTransition = false;
|
||||
didWarnSetStateChildContext = false;
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
/**
|
||||
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||
*
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*
|
||||
* @emails react-core
|
||||
* @jest-environment node
|
||||
*/
|
||||
|
||||
'use strict';
|
||||
|
||||
describe('ReactTracking', () => {
|
||||
it('should error if profiling renderer and non-profiling schedule/tracking bundles are combined', () => {
|
||||
jest.resetModules();
|
||||
|
||||
const ReactFeatureFlags = require('shared/ReactFeatureFlags');
|
||||
ReactFeatureFlags.enableSchedulerTracking = false;
|
||||
|
||||
require('schedule/tracking');
|
||||
|
||||
ReactFeatureFlags.enableSchedulerTracking = true;
|
||||
|
||||
expect(() => require('react-dom')).toThrow(
|
||||
'Learn more at http://fb.me/react-profiling',
|
||||
);
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,7 @@
|
||||
'use strict';
|
||||
|
||||
if (process.env.NODE_ENV === 'production') {
|
||||
module.exports = require('./cjs/schedule-tracking.profiling.min.js');
|
||||
} else {
|
||||
module.exports = require('./cjs/schedule-tracking.development.js');
|
||||
}
|
||||
@@ -20,6 +20,7 @@
|
||||
"README.md",
|
||||
"index.js",
|
||||
"tracking.js",
|
||||
"tracking-profiling.js",
|
||||
"cjs/",
|
||||
"umd/"
|
||||
]
|
||||
|
||||
Reference in New Issue
Block a user