diff --git a/scripts/fiber/tests-passing.txt b/scripts/fiber/tests-passing.txt index c749ed37ab..5e820d1072 100644 --- a/scripts/fiber/tests-passing.txt +++ b/scripts/fiber/tests-passing.txt @@ -1207,7 +1207,6 @@ src/renderers/shared/fiber/__tests__/ReactIncrementalScheduling-test.js * can opt-in to deferred/animation scheduling inside componentDidMount/Update * performs Task work even after time runs out * does not perform animation work after time runs out -* can force synchronous updates with syncUpdates, even inside batchedUpdates src/renderers/shared/fiber/__tests__/ReactIncrementalSideEffects-test.js * can update child nodes of a host instance diff --git a/src/renderers/shared/__tests__/ReactPerf-test.js b/src/renderers/shared/__tests__/ReactPerf-test.js index 2695e648b2..b314d93f81 100644 --- a/src/renderers/shared/__tests__/ReactPerf-test.js +++ b/src/renderers/shared/__tests__/ReactPerf-test.js @@ -16,7 +16,6 @@ describe('ReactPerf', () => { var ReactDOM; var ReactPerf; var ReactTestUtils; - var ReactDOMFeatureFlags; var emptyFunction; var App; @@ -39,7 +38,6 @@ describe('ReactPerf', () => { ReactDOM = require('ReactDOM'); ReactPerf = require('ReactPerf'); ReactTestUtils = require('ReactTestUtils'); - ReactDOMFeatureFlags = require('ReactDOMFeatureFlags'); emptyFunction = require('emptyFunction'); App = class extends React.Component { @@ -647,10 +645,6 @@ describe('ReactPerf', () => { var container = document.createElement('div'); var thrownErr = new Error('Muhaha!'); - if (ReactDOMFeatureFlags.useFiber) { - spyOn(console, 'error'); - } - class Evil extends React.Component { componentWillMount() { throw thrownErr; @@ -685,15 +679,6 @@ describe('ReactPerf', () => { } ReactDOM.unmountComponentAtNode(container); ReactPerf.stop(); - - if (ReactDOMFeatureFlags.useFiber) { - // A sync `render` inside cWM will print a warning. That should be the - // only warning. - expect(console.error.calls.count()).toEqual(1); - expect(console.error.calls.argsFor(0)[0]).toMatch( - /Render methods should be a pure function of props and state/ - ); - } }); it('should not print errant warnings if portal throws in componentDidMount()', () => { diff --git a/src/renderers/shared/fiber/ReactFiberScheduler.js b/src/renderers/shared/fiber/ReactFiberScheduler.js index 20603ec688..0bc6e2d223 100644 --- a/src/renderers/shared/fiber/ReactFiberScheduler.js +++ b/src/renderers/shared/fiber/ReactFiberScheduler.js @@ -69,7 +69,6 @@ var { if (__DEV__) { var ReactFiberInstrumentation = require('ReactFiberInstrumentation'); var ReactDebugCurrentFiber = require('ReactDebugCurrentFiber'); - var warning = require('warning'); } var timeHeuristicForUnitOfWork = 1; @@ -111,8 +110,8 @@ module.exports = function(config : HostConfig(config : HostConfig(config : HostConfig(config : HostConfig(config : HostConfig(config : HostConfig(fn : (a: A) => R, a : A) : R { - const previousShouldDeferSyncUpdates = shouldDeferSyncUpdates; - shouldDeferSyncUpdates = true; + const previousIsBatchingUpdates = isBatchingUpdates; + isBatchingUpdates = true; try { return fn(a); } finally { - shouldDeferSyncUpdates = previousShouldDeferSyncUpdates; + isBatchingUpdates = previousIsBatchingUpdates; // If we're not already inside a batch, we need to flush any task work // that was created by the user-provided function. - if (!shouldDeferSyncUpdates) { + if (!isPerformingWork && !isBatchingUpdates) { performWork(TaskPriority); } } @@ -1136,14 +1096,14 @@ module.exports = function(config : HostConfig(fn : () => A) : A { const previousPriorityContext = priorityContext; - const previousShouldDeferSyncUpdates = shouldDeferSyncUpdates; + const previousIsBatchingUpdates = isBatchingUpdates; priorityContext = SynchronousPriority; - shouldDeferSyncUpdates = false; + isBatchingUpdates = false; try { return fn(); } finally { priorityContext = previousPriorityContext; - shouldDeferSyncUpdates = previousShouldDeferSyncUpdates; + isBatchingUpdates = previousIsBatchingUpdates; } } diff --git a/src/renderers/shared/fiber/__tests__/ReactIncrementalScheduling-test.js b/src/renderers/shared/fiber/__tests__/ReactIncrementalScheduling-test.js index 33a43df6d6..26e14b99be 100644 --- a/src/renderers/shared/fiber/__tests__/ReactIncrementalScheduling-test.js +++ b/src/renderers/shared/fiber/__tests__/ReactIncrementalScheduling-test.js @@ -340,14 +340,4 @@ describe('ReactIncrementalScheduling', () => { // animation priority. expect(ReactNoop.getChildren()).toEqual([span(1)]); }); - - it('can force synchronous updates with syncUpdates, even inside batchedUpdates', done => { - ReactNoop.batchedUpdates(() => { - ReactNoop.syncUpdates(() => { - ReactNoop.render(); - expect(ReactNoop.getChildren()).toEqual([span()]); - done(); - }); - }); - }); }); diff --git a/src/renderers/shared/hooks/__tests__/ReactComponentTreeHook-test.js b/src/renderers/shared/hooks/__tests__/ReactComponentTreeHook-test.js index e0114b5643..db281517a4 100644 --- a/src/renderers/shared/hooks/__tests__/ReactComponentTreeHook-test.js +++ b/src/renderers/shared/hooks/__tests__/ReactComponentTreeHook-test.js @@ -18,7 +18,6 @@ describe('ReactComponentTreeHook', () => { var ReactInstanceMap; var ReactComponentTreeHook; var ReactComponentTreeTestUtils; - var ReactDOMFeatureFlags; beforeEach(() => { jest.resetModules(); @@ -29,7 +28,6 @@ describe('ReactComponentTreeHook', () => { ReactInstanceMap = require('ReactInstanceMap'); ReactComponentTreeHook = require('ReactComponentTreeHook'); ReactComponentTreeTestUtils = require('ReactComponentTreeTestUtils'); - ReactDOMFeatureFlags = require('ReactDOMFeatureFlags'); }); function assertTreeMatches(pairs) { @@ -1843,9 +1841,6 @@ describe('ReactComponentTreeHook', () => { // https://github.com/facebook/react/issues/7187 var el = document.createElement('div'); var portalEl = document.createElement('div'); - if (ReactDOMFeatureFlags.useFiber) { - spyOn(console, 'error'); - } class Foo extends React.Component { componentWillMount() { ReactDOM.render(
, portalEl); @@ -1855,14 +1850,6 @@ describe('ReactComponentTreeHook', () => { } } ReactDOM.render(, el); - if (ReactDOMFeatureFlags.useFiber) { - // A sync `render` inside cWM will print a warning. That should be the - // only warning. - expect(console.error.calls.count()).toEqual(1); - expect(console.error.calls.argsFor(0)[0]).toMatch( - /Render methods should be a pure function of props and state/ - ); - } }); it('is created when calling renderToString during render', () => { diff --git a/src/renderers/shared/shared/__tests__/ReactUpdates-test.js b/src/renderers/shared/shared/__tests__/ReactUpdates-test.js index 638ab6eda2..d353b20b60 100644 --- a/src/renderers/shared/shared/__tests__/ReactUpdates-test.js +++ b/src/renderers/shared/shared/__tests__/ReactUpdates-test.js @@ -1143,25 +1143,14 @@ describe('ReactUpdates', () => { expect(mounts).toBe(1); }); - it('mounts and unmounts are sync even in a batch', () => { - var container1 = document.createElement('div'); - var container2 = document.createElement('div'); - - let called = false; - class Foo extends React.Component { - componentDidMount() { - called = true; - ReactDOM.render(
Hello
, container2); - expect(container2.textContent).toEqual('Hello'); - ReactDOM.unmountComponentAtNode(container2); - expect(container2.textContent).toEqual(''); - } - render() { - return
{this.props.step}
; - } - } - - ReactDOM.render(, container1); - expect(called).toEqual(true); + it('mounts and unmounts are sync even in a batch', done => { + var container = document.createElement('div'); + ReactDOM.unstable_batchedUpdates(() => { + ReactDOM.render(
Hello
, container); + expect(container.textContent).toEqual('Hello'); + ReactDOM.unmountComponentAtNode(container); + expect(container.textContent).toEqual(''); + done(); + }); }); });