type VaporTransitionHooks,
insert,
} from '../block'
+import { renderEffect } from '../renderEffect'
import {
resolveTransitionHooks,
setTransitionHooks,
setup(props: TransitionGroupProps, { slots }) {
const instance = currentInstance as VaporComponentInstance
const state = useTransitionState()
- const cssTransitionProps = resolveTransitionProps(props)
+
+ // use proxy to keep props reference stable
+ let cssTransitionProps = resolveTransitionProps(props)
+ const propsProxy = new Proxy({} as typeof cssTransitionProps, {
+ get(_, key) {
+ return cssTransitionProps[key as keyof typeof cssTransitionProps]
+ },
+ })
+
+ renderEffect(() => {
+ cssTransitionProps = resolveTransitionProps(props)
+ })
let prevChildren: TransitionBlock[]
let children: TransitionBlock[]
// store props and state on fragment for reusing during insert new items
setTransitionHooksOnFragment(slottedBlock, {
- props: cssTransitionProps,
+ props: propsProxy,
state,
instance,
} as VaporTransitionHooks)
if (child.$key != null) {
const hooks = resolveTransitionHooks(
child,
- cssTransitionProps,
+ propsProxy,
state,
instance!,
)