Sha256: d0a4e4b8eaa68ddc80276f95a67a35ad5faf869cefc40099e46feed46cece854

Contents?: true

Size: 1.08 KB

Versions: 61

Compression:

Stored size: 1.08 KB

Contents

/**
 * Find the closest error boundary to a thrown error and call it
 * @param {object} error The thrown value
 * @param {import('../internal').VNode} vnode The vnode that threw
 * the error that was caught (except for unmounting when this parameter
 * is the highest parent that was being unmounted)
 */
export function _catchError(error, vnode) {
	/** @type {import('../internal').Component} */
	let component, ctor, handled;

	for (; (vnode = vnode._parent); ) {
		if ((component = vnode._component) && !component._processingException) {
			try {
				ctor = component.constructor;

				if (ctor && ctor.getDerivedStateFromError != null) {
					component.setState(ctor.getDerivedStateFromError(error));
					handled = component._dirty;
				}

				if (component.componentDidCatch != null) {
					component.componentDidCatch(error);
					handled = component._dirty;
				}

				// This is an error boundary. Mark it as having bailed out, and whether it was mid-hydration.
				if (handled) {
					return (component._pendingError = component);
				}
			} catch (e) {
				error = e;
			}
		}
	}

	throw error;
}

Version data entries

61 entries across 61 versions & 1 rubygems

Version Path
isomorfeus-preact-10.6.42 node_modules/preact/src/diff/catch-error.js
isomorfeus-preact-10.6.41 node_modules/preact/src/diff/catch-error.js
isomorfeus-preact-10.6.40 node_modules/preact/src/diff/catch-error.js
isomorfeus-preact-10.6.39 node_modules/preact/src/diff/catch-error.js
isomorfeus-preact-10.6.38 node_modules/preact/src/diff/catch-error.js
isomorfeus-preact-10.6.37 node_modules/preact/src/diff/catch-error.js
isomorfeus-preact-10.6.36 node_modules/preact/src/diff/catch-error.js
isomorfeus-preact-10.6.35 node_modules/preact/src/diff/catch-error.js
isomorfeus-preact-10.6.34 node_modules/preact/src/diff/catch-error.js
isomorfeus-preact-10.6.33 node_modules/preact/src/diff/catch-error.js
isomorfeus-preact-10.6.32 node_modules/preact/src/diff/catch-error.js
isomorfeus-preact-10.6.31 node_modules/preact/src/diff/catch-error.js
isomorfeus-preact-10.6.30 node_modules/preact/src/diff/catch-error.js
isomorfeus-preact-10.6.29 node_modules/preact/src/diff/catch-error.js
isomorfeus-preact-10.6.28 node_modules/preact/src/diff/catch-error.js
isomorfeus-preact-10.6.27 node_modules/preact/src/diff/catch-error.js
isomorfeus-preact-10.6.26 node_modules/preact/src/diff/catch-error.js
isomorfeus-preact-10.6.25 node_modules/preact/src/diff/catch-error.js
isomorfeus-preact-10.6.24 node_modules/preact/src/diff/catch-error.js
isomorfeus-preact-10.6.23 node_modules/preact/src/diff/catch-error.js