diff --git a/src/react/ReactChildren.js b/src/react/ReactChildren.js index bbc07d81edaad3705a3dca0942e1cbc01bff2624..fd2379bee73273cca19a95bef40614dc1cbcaebe 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 {