Я использую реагирующую пружину, чтобы попытаться анимировать содержимое AJAX при его загрузке.
У меня есть контейнерный компонент, который я иногда хочу анимировать в 'auto' с 0, а иногда я хочу анимироватьдо 100% в зависимости от пропуска, который передается.
У меня есть const, который я установил, который затем передается в свойство selectedHeight в компоненте Transition.Затем я использую это для установки свойства высоты в свойстве стиля смонтированного дочернего компонента.
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>
)
}
Проблема в том, что это приводит к ошибке превышения максимального callstack, так как я не думаю, что Reaction-Spring может понять '100% 'строковое значение, только' auto '.
Есть ли способ обойти это?