/
githubmirror
/
preact
Обзор
Документация
Войти
/
githubmirror
/
preact
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
11.0.0-beta.2
src/clone-element.js
38 строк
1 KB
Olexandr88
fix(clone-element): preserve falsy key and ref values in cloneElement (#5082)
07 май 2026, 20:34
Не верифицирован
07 май 2026, 20:34
ee67f64
Код
Авторство
О чём код?
import { assign, slice } from './util'; import { createVNode } from './create-element'; import { NULL, UNDEFINED } from './constants'; /** * Clones the given VNode, optionally adding attributes/props and replacing its * children. * @param {import('./internal').VNode} vnode The virtual DOM element to clone * @param {object} props Attributes/props to add when cloning * @param {Array<import('./internal').ComponentChildren>} rest Any additional arguments will be used * as replacement children. * @returns {import('./internal').VNode} */ export function cloneElement(vnode, props, children) { let normalizedProps = assign({}, vnode.props), key, ref, i; for (i in props) { if (i == 'key') key = props[i]; else if (i == 'ref' && typeof vnode.type != 'function') ref = props[i]; else normalizedProps[i] = props[i]; } if (arguments.length > 2) { normalizedProps.children = arguments.length > 3 ? slice.call(arguments, 2) : children; } return createVNode( vnode.type, normalizedProps, key !== UNDEFINED ? key : vnode.key, ref !== UNDEFINED ? ref : vnode.ref, NULL ); }