Моя проблема заключается в следующем: у меня есть InnerComp
, который можно разместить в двух разных позициях внутри структуры JSX, и его положение зависит от переменной place
.
Что мне нужно, так это когда родительский компонент меняет положение InnerComp
, текущее состояние (и я имею в виду не только внутреннее состояние компонента, но и другие обработанные дочерние элементы, все, что с ним связано) остается прежним.
Единственной идеей, которую я имел, было сохранение InnerComp
в useRef
, но, похоже, это не сработало. Позвольте мне показать вам пример в этой песочнице: https://codesandbox.io/s/pedantic-smoke-3risy
Теперь выполните следующие действия:
- Если вы нажмете увеличить , вы увидите что
counter
в родительском компоненте обновлен, но props.counter
внутри InnerComp
не получает изменения (ref не вычисляется при повторном рендеринге :(); - Если вы нажмете увеличение внутреннего ,
innerCounter
действительно увеличивается; - Затем, если вы нажмете переключить место ,
InnerComp
будет отображаться в другой позиции, но innerCounter
вернулся к 0
;
Я знаю, что мог бы попытаться изменить структуру HTML TAG и изменить CSS, когда я хочу изменить положение (и я конечно, это сработает), но, к сожалению, в реальном приложении REACT мне нужно было бы чрезмерно усложнить структуру, чтобы сделать это возможным (две позиции не связаны, как в этом примере).
Я полностью вне идей, поэтому здесь я спрашиваю, как этого добиться. Было бы достаточно указать мне на возможный путь, ru Я попробую.