请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

请问如果多次调用 React.Children.map 时,traverseContextPool 是怎么变化的,没看到有重新赋 [] 的语句

多次调用 map 的话 pool 不是共用的吗?那下次再调用 map 的时候 poll 里面没有上次留下来的状态吗?

正在回答

3回答

pool在每一个节点使用完之后都会被返回并且清空

1 回复 有任何疑惑可以回复我~
  • 提问者 Dalei666 #1
    非常感谢!
    回复 有任何疑惑可以回复我~ 2019-05-26 00:29:26
MeSKiL 2019-05-20 15:35:53

releaseTraverseContext(traverseContext);调用完了mapIntoWithKeyPrefixInternal方法的最后,pool是会被清空的。主要是用来做多层嵌套数组的时候pool才有实际的用处。

1 回复 有任何疑惑可以回复我~
  • 提问者 Dalei666 #1
    我理解的是 traverseContextPool 在最开始时是 [],后面通过调用 map 方法会向里面加入多个重置后的 Context,这些 Context 一直保留在 traverseContextPool 里就好了,随用随取,不需要被清除了
    回复 有任何疑惑可以回复我~ 2019-05-26 00:34:33
Tao_53755083 2020-05-31 23:44:25

感觉下来  池子应该共用的, 每次调用都会先判断需不需pop  处理完后再 清空对象 重新push 一个属性清空的对象进去 这样应该是能够避免每次重新申请对象 销毁对象造成的额外开销。 至于 池子长度10  好像是给到 mapSingleChildIntoContext  用来做一个大的循环递归调用准备的。

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号