美文网首页React Native学习
react-navigation快速点击会导致多次跳转的问题解决

react-navigation快速点击会导致多次跳转的问题解决

作者: 以德扶人 | 来源:发表于2018-01-15 15:54 被阅读224次

用react-navigation的同学是不是经常遇到多次点击会跳转多次的bug,查询了下,有网友给出了改源码延时的方法,有的给出拦截的方法,我这边也有一种方式可以参考.基本原理也是拦截,但是只要几行代码,而且不用改源码.

代码如下:

import React from "react";
import { StyleSheet, Text, View } from 'react-native';
import { StackNavigator ,NavigationActions } from 'react-navigation';
import { Constants } from 'expo';

class HomeScreen extends React.Component {
  static navigationOptions = {
    title: 'Welcome',
  };
  render() {
    return <Text>Hello, Navigation!</Text>;
  }
}

const SimpleApp = StackNavigator({
  Home: { screen: HomeScreen },
});

//主要是这一步
const navigateOnce = (getStateForAction) => (action, state) => {
  const {type, routeName} = action;
  return (
    state &&
    type === NavigationActions.NAVIGATE &&
    routeName === state.routes[state.routes.length - 1].routeName
  ) ? null : getStateForAction(action, state);
};

//这是第二步
SimpleApp.router.getStateForAction = navigateOnce(SimpleApp.router.getStateForAction);

export default class App extends React.Component {
  render() {
    return (
      <View>
          <Text>Im App</Text>
          <SimpleApp />
        </View> 
    );
  }
}


相关文章

网友评论

  • KingTortoise:升级版本后该方法应该需要做些修改 改为(type === NavigationActions.NAVIGATE || type === StackActions.PUSH)
    e8eba95c4fbc:V2版本如果加上type === StackActions.PUSH感觉有问题,比如页面上有其他按钮需要再次打开这个页面的话,push方法就没办法用了。。。
    以德扶人:一直没空升级2.0以上的版本,感谢指出
  • IDO0:666

本文标题:react-navigation快速点击会导致多次跳转的问题解决

本文链接:https://www.haomeiwen.com/subject/yehdoxtx.html