From 954e2e52279edeeef9d4d7e12cf27f453c690af0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=81=AB=E7=A5=9E=E7=9A=84=E5=85=89=E8=8C=AB?= <39282214@qq.com> Date: Tue, 7 Apr 2020 21:59:40 +0800 Subject: [PATCH] =?UTF-8?q?update=20src/react/ReactChildren.js.=20#897#=20?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0map=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/react/ReactChildren.js | 35 ++++++++++++++++++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/src/react/ReactChildren.js b/src/react/ReactChildren.js index bbc07d8..fd2379b 100644 --- a/src/react/ReactChildren.js +++ b/src/react/ReactChildren.js @@ -1,6 +1,39 @@ function mapChildren(children, func, context) { //TODO实现此mapChildren方法 - return children; + + function FlatArr(arr,newArr,count){ + + // debugger + if(Array.isArray(arr)){ + arr.forEach((item,index)=>{ + if(Array.isArray(item)){ + FlatArr(item,newArr,index) + }else{ + + let str = ''; + if((item.key==undefined&&item.props.children.key==undefined)){ + str +=".0"; + } + str += item.props.children.key && `${item.props.children.key}/`||count||''; + str+= (item.key && `.$${item.key}` || ''); + item.key = str; + newArr.push(item) + } + }) + } + } + let arrList = [];//原始的虚拟dom数组 + let returnArrList = [];//返回的虚拟dom数组 + let virtualDoms;//需要运行的虚拟dom + + FlatArr(children,arrList); + virtualDoms = arrList.map(func) + FlatArr(virtualDoms,returnArrList) + + // console.log('children:', children); + // console.log('virtualDoms:', returnArrList); + + return returnArrList; } export { -- Gitee