diff --git a/TODO.md b/TODO.md index e7b94d815a..8f9761222f 100644 --- a/TODO.md +++ b/TODO.md @@ -2,8 +2,8 @@ - https://github.com/preactjs/preact/pull/4358 - https://github.com/preactjs/preact/pull/4361 - https://github.com/preactjs/preact/pull/4460 -- https://github.com/preactjs/preact/pull/4453 - Backing VNodes +- Enable removing classes from the bundle - Remove deprecated lifecycle methods - Try to get rid of DOM pointers - Separate mount/update paths diff --git a/compat/src/index.d.ts b/compat/src/index.d.ts index bc066c39df..eb4f659796 100644 --- a/compat/src/index.d.ts +++ b/compat/src/index.d.ts @@ -774,11 +774,6 @@ declare namespace React { export function flushSync(fn: () => R): R; export function flushSync(fn: (a: A) => R, a: A): R; - export function unstable_batchedUpdates( - callback: (arg?: any) => void, - arg?: any - ): void; - export type PropsWithChildren

= P & { children?: preact.ComponentChildren | undefined; }; diff --git a/compat/src/index.js b/compat/src/index.js index ab3bf03b3a..38cb891275 100644 --- a/compat/src/index.js +++ b/compat/src/index.js @@ -116,16 +116,6 @@ function findDOMNode(component) { ); } -/** - * Deprecated way to control batched rendering inside the reconciler, but we - * already schedule in batches inside our rendering code - * @template Arg - * @param {(arg: Arg) => void} callback function that triggers the updated - * @param {Arg} [arg] Optional argument that can be passed to the callback - */ -// eslint-disable-next-line camelcase -const unstable_batchedUpdates = (callback, arg) => callback(arg); - /** * In React, `flushSync` flushes the entire tree and forces a rerender. It's * implmented here as a no-op. @@ -237,8 +227,6 @@ export { memo, forwardRef, flushSync, - // eslint-disable-next-line camelcase - unstable_batchedUpdates, StrictMode, Suspense, lazy, @@ -285,7 +273,6 @@ export default { memo, forwardRef, flushSync, - unstable_batchedUpdates, StrictMode, Suspense, lazy, diff --git a/compat/src/render.js b/compat/src/render.js index f18cbd896b..0cdd6dad55 100644 --- a/compat/src/render.js +++ b/compat/src/render.js @@ -36,13 +36,7 @@ const CAMEL_REPLACE = /[A-Z0-9]/g; const IS_DOM = typeof document !== 'undefined'; // Input types for which onchange should not be converted to oninput. -// type="file|checkbox|radio", plus "range" in IE11. -// (IE11 doesn't support Symbol, which we use here to turn `rad` into `ra` which matches "range") -const onChangeInputType = type => - (typeof Symbol != 'undefined' && typeof Symbol() == 'symbol' - ? /fil|che|rad/ - : /fil|che|ra/ - ).test(type); +const onChangeInputType = type => /fil|che|rad/.test(type); // Some libraries like `react-virtualized` explicitly check for this. Component.prototype.isReactComponent = {}; diff --git a/compat/test/browser/exports.test.js b/compat/test/browser/exports.test.js index cced23da45..d96e4bed4c 100644 --- a/compat/test/browser/exports.test.js +++ b/compat/test/browser/exports.test.js @@ -58,7 +58,6 @@ describe('compat exports', () => { expect(Compat.Children.toArray).to.exist.and.be.a('function'); expect(Compat.Children.only).to.exist.and.be.a('function'); expect(Compat.unmountComponentAtNode).to.exist.and.be.a('function'); - expect(Compat.unstable_batchedUpdates).to.exist.and.be.a('function'); expect(Compat.version).to.exist.and.be.a('string'); expect(Compat.startTransition).to.be.a('function'); }); @@ -99,7 +98,6 @@ describe('compat exports', () => { expect(Named.Children.toArray).to.exist.and.be.a('function'); expect(Named.Children.only).to.exist.and.be.a('function'); expect(Named.unmountComponentAtNode).to.exist.and.be.a('function'); - expect(Named.unstable_batchedUpdates).to.exist.and.be.a('function'); expect(Named.version).to.exist.and.be.a('string'); }); }); diff --git a/compat/test/browser/unstable_batchedUpdates.test.js b/compat/test/browser/unstable_batchedUpdates.test.js deleted file mode 100644 index bef738484b..0000000000 --- a/compat/test/browser/unstable_batchedUpdates.test.js +++ /dev/null @@ -1,33 +0,0 @@ -import { unstable_batchedUpdates, flushSync } from 'preact/compat'; - -describe('unstable_batchedUpdates', () => { - it('should call the callback', () => { - const spy = sinon.spy(); - unstable_batchedUpdates(spy); - expect(spy).to.be.calledOnce; - }); - - it('should call callback with only one arg', () => { - const spy = sinon.spy(); - unstable_batchedUpdates(spy, 'foo', 'bar'); - expect(spy).to.be.calledWithExactly('foo'); - }); -}); - -describe('flushSync', () => { - it('should invoke the given callback', () => { - const returnValue = {}; - const spy = sinon.spy(() => returnValue); - const result = flushSync(spy); - expect(spy).to.have.been.calledOnce; - expect(result).to.equal(returnValue); - }); - - it('should invoke the given callback with the given argument', () => { - const returnValue = {}; - const spy = sinon.spy(() => returnValue); - const result = flushSync(spy, 'foo'); - expect(spy).to.be.calledWithExactly('foo'); - expect(result).to.equal(returnValue); - }); -});