From a0661c6e01e07f25d1d68049cd4f80f45d61bc08 Mon Sep 17 00:00:00 2001 From: kup <332518418@qq.com> Date: Wed, 8 Apr 2020 11:56:27 +0800 Subject: [PATCH] test --- src/react/ReactChildren.js | 41 +++++++++++++++++++++++++++++++++++--- 1 file changed, 38 insertions(+), 3 deletions(-) diff --git a/src/react/ReactChildren.js b/src/react/ReactChildren.js index bbc07d8..8812a14 100644 --- a/src/react/ReactChildren.js +++ b/src/react/ReactChildren.js @@ -1,8 +1,43 @@ +const escapedPrefix = "/"; + +function traverseAllChildren(children, arr, func) { + if (!Array.isArray(children)) return null; + for (let i = 0, l = children.length; i < l; i++) { + let child = children[i]; + if (Array.isArray(child)) { + traverseAllChildren(child, arr, func); + } else { + const {key} = child; + child = func(child, i); + arr.push(...child); + } + } + return arr; +} function mapChildren(children, func, context) { - //TODO实现此mapChildren方法 - return children; + if (children === null) return null; + if (children === undefined) return undefined; + + const result = []; + + return traverseAllChildren(children, result, func) } export { mapChildren as map, -}; \ No newline at end of file +}; + +// 每一个渲染的虚拟dom结构 +// $$typeof: Symbol(react.element) +// type: "div" +// key: ".0/.$div0A" +// ref: null +// props: +// key: undefined +// children: +// $$typeof: Symbol(react.element) +// type: "div" +// key: null +// ref: null +// props: +// children: "child1" -- Gitee