React Router v4 Совпадение переходов с использованием React Motion
Я люблю RR4 и RM, уже есть отличные примеры для React Router V4 ( https://github.com/ReactTraining/react-router/tree/v4/website/examples), но я пытаюсь понять, как я могу использовать новый API V4 для перехода между различными совпадениями в моем маршрутизаторе с помощью React Motion, постепенно исчезая между моими "страницами".
Я пытался понять, как пример Transition работает с MatchWithFade, но мне не хватает, как это сделать и применить его к нескольким совпадениям, представляющим мою структуру страницы.
В качестве примера: с учетом двух маршрутов, установленных в моем маршрутизаторе, как можно настроить монтирование и размонтирование с помощью response-motion с помощью TransitionMotion?
<Router>
<div>
<Match pattern="/products" component={Products} />
<Match pattern="/accessories" component={Accessories} />
</div>
</Router>
Любая помощь будет принята с благодарностью.
1 ответ
Из приведенного примера мы можем упростить. Сначала мы создаем компонент-обертку, который заменит <Match/>
пометьте и оберните его компонент:
import React from 'react'
import { Match } from 'react-router'
import { TransitionMotion, spring } from 'react-motion'
const styles = {}
styles.fill = {
position: 'absolute',
left: 0,
right: 0,
top: 0,
bottom: 0
}
const MatchTransition = ({ component: Component, ...rest }) => {
const willLeave = () => ({ zIndex: 1, opacity: spring(0) })
return (
<Match {...rest} children={({ matched, ...props }) => (
<TransitionMotion
willLeave={willLeave}
styles={matched ? [ {
key: props.location.pathname,
style: { opacity: 1 },
data: props
} ] : []}
>
{interpolatedStyles => (
<div>
{interpolatedStyles.map(config => (
<div
key={config.key}
style={{ ...styles.fill, ...config.style }}
>
<Component {...config.data} />
</div>
))}
</div>
)}
</TransitionMotion>
)} />
)
}
export default MatchTransition
Тогда мы используем это так:
<MatchTransition pattern='/here' component={About} />
<MatchTransition pattern='/there' component={Home} />