我正在使用 react-spring 尝试在加载 AJAX 内容时对其进行动画处理。
我有一个容器组件,有时我想从 0 动画到“自动”,有时我想根据传入的道具动画到 100%。
我设置了一个 const,然后将其传递到 Transition 组件中的 computedHeight 属性。然后我使用它在已安装的子组件的样式属性中设置高度属性。
const Container = ({ data, children, stretchHeight }) => {
const loaded = data.loadStatus === 'LOADED';
const loading = data.loadStatus === 'LOADING';
const animationHeight = stretchHeight ? '100%' : 'auto';
return (
<div
className={classnames({
'data-container': true,
'is-loading': loading,
'is-loaded': loaded,
'stretch-height': stretchHeight
})}
aria-live="polite"
>
{loading &&
<div style={styles} className='data-container__spinner-wrapper'>
<LoadingSpinner />
</div>
}
<Transition
from={{ opacity: 0, calculatedHeight: 0 }}
enter={{ opacity: 1, calculatedHeight: animationHeight }}
leave={{ opacity: 0, calculatedHeight: 0 }}
config={config.slow}
>
{loaded && (styles => {
return (
<div style={{ opacity: styles.opacity, height: styles.calculatedHeight }}>
{children}
</div>
)
}
)}
</Transition>
</div>
)
}
问题是这会导致最大调用堆栈超出错误,因为我认为 react-spring 不能理解“100%”字符串值,只能理解“自动”。
有解决办法吗?