Ваша проблема очень расстраивает, потому что она должна работать, и это такой простой пример. Я не мог найти простого решения прямо сейчас. Это должно быть связано с ключами.
Но у меня это работает с более новыми версиями. Если вы измените, например, 9.0.0-beta.1.
Вы также можете попробовать новейшую версию 9.0.0-r c .3. С нетерпением жду нового релиза 9. Переход полностью переработан.
Вы можете прочитать об изменениях здесь: https://aleclarson.github.io/react-spring/v9/#The -useTransition-rework
Ваш пример выглядит так с 9.0.0-r c .3:
const itemsA = ["a", "b", "c"];
const itemsB = ["d", "e", "f"];
export default function App() {
const [expanded, setExpanded] = useState(false);
const items = expanded ? [...itemsA, ...itemsB] : [...itemsA];
const transition = useTransition(items, {
from: { opacity: 0, transform: "translate3d(100%,0,0)" },
enter: { opacity: 1, transform: "translate3d(0%,0,0)" },
leave: { opacity: 0, transform: "translate3d(50%,0,0)" },
keys: p => p
});
return (
<div className="simple-trans-main" onClick={() => setExpanded(!expanded)}>
{transition((style, item, t, i) => (
<animated.div style={style}>
<h1>{item}</h1>
</animated.div>
))}
</div>
);
}
https://codesandbox.io/s/basic-transition-with-v9-react-spring-ojp4w