Могу ли я анализировать и клонировать потомков с глубоким реагированием во время рендеринга? - PullRequest
0 голосов
/ 04 декабря 2018

Я пишу библиотеку, другие пишут компоненты реагирования плагина.

Библиотеке нужно распространить некоторые предопределенные реквизиты на самом высоком фактическом HTML-элементе в дереве jsx плагина.

Я бы хотел взять на себя ответственность от авторов плагинов и нести ответственность за распространение реквизита на стороне библиотеки, потому что вещи не работают, если кто-то забывает.

Теперь я не могу просто обернутьих плагины в div, потому что такие div s могут оказаться в неправильных местах, таких как между table / tr, tr / td и т. д., которые находятся вне моего контроля.

Я подозреваю, что нет способа достичь этого, но кто знает ..

Какой-то совершенно нерабочий псевдокод, чтобы проиллюстрировать это:

import React, { Fragment, Children, cloneElement } from 'react'

const annotateFirstChild = (children, props) => Children.map(children, (ch, i) => {
  if (i > 0) {
    return ch
  }
  return isHtmlElement(ch)
    ? cloneElement(ch, { ...props })
    : magicCollapse(annotateFirstChild(magicExpand(ch), props)) 
})


const PropsPassingFragment = ({ children, ...props }) => {
  return (
    <Fragment>
      {annotateFirstChild(children, props)}
    </Fragment>
  )
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...