Animation 导航实验用动画替换场景

Animation 导航实验用动画替换场景,animation,navigation,react-native,stack,Animation,Navigation,React Native,Stack,用新场景替换堆栈中最后一个场景的方法是什么?新场景和动画一起推送,旧场景在推送动画结束时从堆栈中无声弹出。导航实验状态TILS replaceAt和replaceAtIndex仅在顶部更改场景而不显示动画。导航状态TILS中没有为您执行此操作的实用功能,但您必须做的是,然后在导航过渡动画的最后,对除之前的路线之外的所有路线执行一次导航最新的 由于您使用的是NavigationCardStack,因此必须对使用InteractionManager推送的组件执行以下操作: 下面是一个例子: // N

用新场景替换堆栈中最后一个场景的方法是什么?新场景和动画一起推送,旧场景在推送动画结束时从堆栈中无声弹出。导航实验状态TILS replaceAt和replaceAtIndex仅在顶部更改场景而不显示动画。

导航状态TILS中没有为您执行此操作的实用功能,但您必须做的是,然后在导航过渡动画的最后,对除之前的路线之外的所有路线执行一次导航最新的

由于您使用的是
NavigationCardStack
,因此必须对使用
InteractionManager
推送的组件执行以下操作:

下面是一个例子:

// Navigation reducer
function routeReducer(
  navigationState = {
    routes: [],
    index: 0,
  },
  action,
) {
  switch (action.type) {
    case 'replaceWithPushAnimation':
      // Pass a `reset` flag to your component so it knows to `resetWithoutRoute`
      return NavigationStateUtils.push(navigationState, action.route);
    case 'resetWithoutRoute':
      return NavigationStateUtils.reset(
        navigationState,
        [
          // Copy of all the routes except for navigationState.routes[length - 2]
        ]);
    default:
      return navigationState;
  }
}

// The component that you pushed
class PushedComponent extends React.Component {
  componentDidMount() {
    if (this.props.shouldResetWithoutPrevious) {
      // This runs after the navigation transition is over
      InteractionManager.runAfterInteractions(() => {
        // This function calls the reducer to trigger the
        // routes reset
        this.props.onNavigate({
          type: 'resetWithoutRoute',
        });
      });
    }
  }
  // render() {}
}

如果您不喜欢这种方法,您可以使用
NavigationTransitioner
,它可以执行
重置
,但是,由于它是较低级别的API,您必须自己实现导航转换。

您使用的渲染器是什么?您使用的是导航卡堆栈还是导航转换程序?我使用默认卡堆栈。您在代码中如何将此值设置为true this.props.shouldResetWithoutPrevious,也显示该时间@rclai