【发布时间】:2019-11-16 19:22:38
【问题描述】:
我正在尝试为卡片设置动画。如果有选定的值,则会出现卡片。如果所选项目未定义,则卡片将消失。我得到了这个工作。
我尝试做的下一件事是,如果选择更改(一个新项目) - 动画出一张卡片并动画化一张新卡片。我对如何进行这项工作感到困惑......这是我尝试过的那种工作。
很明显,我不明白应该怎么做。我想知道是否需要将其分成两张卡并运行 useChain。
const App: React.FC = () => {
//...
const [selectedItem, setSelectedItem] = useState<TimelineItem | undefined>(undefined);
const [lastSelectedItem, setLastSelectedItem] = useState<TimelineItem>({
content: '',
start: new Date(),
id: 0,
});
//...
const transitions = useTransition(
[selectedItem, lastSelectedItem],
item => (item ? item.id : 0),
{
from: { opacity: 0 },
enter: { opacity: 1 },
leave: { opacity: 0 },
}
);
return (
<Timeline
onItemSelect={item => {
if (selectedItem) setLastSelectedItem(selectedItem);
setSelectedItem(item);
}}
/>
{transitions.map(({ item, key, props }) => {
return (
item && (
<animated.div style={props}>
{item === selectedItem ? (
<ItemDetails
item={selectedItem} // If the selected item is undefined, this will not be running (happens when unselecting something)
groups={groups}
key={key || undefined} // key becomes undefined since item is
></ItemDetails>
) : (
false && ( // The last item never shows, it still has the data for the lastSelectedItem (For the fade out while the new Item is being shown or there is no new item).
<ItemDetails
item={lastSelectedItem}
groups={groups}
key={key || undefined}
></ItemDetails>
)
)}
</animated.div>
)
);
})}
);
};
【问题讨论】:
标签: reactjs react-spring