/
githubmirror
/
preact
Обзор
Документация
Войти
/
githubmirror
/
preact
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
11.0.0-beta.0
src/clone-element.js
38 строк
1 KB
Jovi De Croock
Move `defaultProps` into `preact/compat` (#4657)
06 июн 2025, 20:24
06 июн 2025, 20:24
2439094
Код
Авторство
О чём код?
import { assign, slice } from './util'; import { createVNode } from './create-element'; import { NULL } 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 || vnode.key, ref || vnode.ref, NULL ); }