У меня есть приложение response-redux, и я использую реагирующую группу переходов для переходов, когда положение дочерних компонентов изменяется при изменении состояния. Однако, если порядок моего объекта состояния редукса изменится, компоненты будут размонтированы, а затем перемонтированы, а не обновлены. Это предотвращает плавный переход компонента в его новое положение. Есть ли способ обойти это без введения нового состояния?
Мой родительский компонент выглядит так:
class ParentComponent extends Component {
...
render() {
return (
<div>
<div>
<CSSTransitionGroup>
<ChildComponents childComponentsToRender=
{this.props.someChildComponents}/>
<CSSTransitionGroup/>
</div>
</div>
)}}
ChildComponents выглядит следующим образом:
export default function ChildComponents(props) {
const childrenToReturn = _.map(props.childComponentsToRender,
(childComponent) =>
<ChildComponent
key={childComponent.uniqueId}
position={childComponent.position} .../>
return (
<Fragment>
{childrenToReturn}
</Fragment>
)
}
И отдельный ChildComponent выглядит так:
export default function ChildComponent(props) {
return (
<div style={{transform: `translate(${props.position.x}px,
${props.position.y}px)`}}>
</div>
)
}
Мое избыточное состояние, которое отображает компоненты, выглядит следующим образом:
{
...,
someChildComponents: {
childComponent1: {
id: someUniqueId,
position: {x: int, y: int}
},
childComponent2: {
id: someUniqueId,
position: {x: int, y: int}
},
...
},
...
}
Проблема возникнет, если будет отправлено действие и состояние изменится, например:
{
someChildComponents: {
childComponent1: {
id: someUniqueId,
position: {x: 100, y: 100}
},
childComponent2: {
id: someUniqueId,
position: {x: 200, y: 200}
}
}
}
Кому:
{
someChildComponents: {
childComponent2: {
id: someUniqueId,
position: {x: 300, y: 300}
},
childComponent1: {
id: someUniqueId,
position: {x: 150, y: 150}
}
}
}