Реагировать Предупреждение о переходе: «jumpToIndex не является функцией» - PullRequest
0 голосов
/ 28 октября 2018

Я недавно обновил реакцию-навигацию до версии 2.18.0, и часть моего кода, которая раньше работала, больше не работает.После прочтения документации у меня все еще возникают проблемы с воспроизведением функций, которые у меня были раньше.

По сути, я хотел, чтобы все данные, которые необходимо было загрузить на экран статистики, перед вызовом jumpToIndex, чтобы компонент StatsScreen имелдоступ к обновленным данным перед render ().

Эта функциональность раньше работала, но теперь я получаю «Отклонение необработанного обещания: TypeError: jumpToIndex не является функцией».предупреждение.и jumpToIndex никогда не происходило.

В App.js я изменил TabNavigator на createBottomTabNavigator и внес необходимые изменения для обновления.

const RootNavigator = createBottomTabNavigator({
  Home: {
    screen: HomeStackNavigator,
    navigationOptions: ({ navigation }) => ({
         //Navigation options here
      ),
    }),
  },
  StatsScreen: {
    screen: StatsScreen,
  },
}, {
  lazy: false,
});

В StatsScreen.js:

export default class StatsScreen extends Component {
  static navigationOptions = ({ navigation }) => ({
    tabBarOnPress: async (tab, jumpToIndex) => {
      if (!tab.focused) {
        await navigation.state.params.update();
        jumpToIndex(tab.index);
      }
    },
  });

  async componentDidMount() {
    this.props.navigation.setParams({
      update: this._updateStats.bind(this),
    });
  }

  async _updateStats() {
    //logic in this function calls updateData() if needed.
  }

  async _updateData() {
   //Update the data
  }

  render() {
    return (
      // Component JSX ommitted from this example
    );
  }
}

Есть идеи о том, что нужно сделать?

1 Ответ

0 голосов
/ 28 октября 2018

Я нашел решение в блоге Андрея Пфайффера: https://itnext.io/handle-tab-changes-in-react-navigation-v2-faeadc2f2ffe

По сути, я изменил параметры навигации на следующий код:

 static navigationOptions = () => ({
    async tabBarOnPress({ navigation, defaultHandler }) {
      await navigation.state.params.onTabFocus();
      defaultHandler();
    },
  });

onTabFocus () теперь выполняет ту же работу, что иupdateStats () раньше делал.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...