Как мне сбросить маршрут в реакции-навигации с помощью Stack Actions? - PullRequest
0 голосов
/ 16 февраля 2019

Мальчики и девочки, как я могу сбросить маршрут в реакции-навигации с помощью Stack Actions и использовать componentDidUpdate вместо componentDidMount.

Возможно ли это?

Это мой код - WorkersView:

import React from 'react';
import { Text, FlatList, View, TouchableOpacity, StatusBar } from 'react-native';
import { Container, Content, ListItem, List, Icon, Fab, Header, Body, Left, Title, Button, Right } from 'native-base';
import { custom, responsive } from '../../styles/config';
import { AntDesign, FontAwesome, MaterialCommunityIcons } from '../../styles/variables/Icons'

import { openDatabase } from 'react-native-sqlite-storage';
var db = openDatabase({ name: 'Database.db' });

export default class WorkersView extends React.Component {
  _isUpdated= false;


  constructor(props) {
    super(props);


    this.state = {
      data: [],
      error: null,
      isLoading: true
    };

    this.arrayholder = [];

    this.getAllWorkers();
  }

  componentDidUpdate() {
    this.getAllWorkers();
  }

Это мой код - createWorker:

onButtonPress() {
    // const navigateAction = NavigationActions.navigate({
    //   routeName: 'Workers',

    //   params: {},

    //   action: NavigationActions.navigate({ routeName: 'WorkersView' }),
    // });

    // this.props.navigation.dispatch(navigateAction);
    const resetAction = StackActions.reset({
      index: 0,
      actions: [NavigationActions.navigate({ routeName: 'createWorker' })],
    });
    const goHome = NavigationActions.navigate({
      routeName: 'Workers',
      params: {}
    })
    this.props.navigation.dispatch(resetAction);
    this.props.navigation.dispatch(goHome);
  }

Я не хочу использовать componentDidMount Я хочу использовать componentDidUpdate.Теперь стековая операция работает, но в WorkersView у меня есть эта ошибка:

Предупреждение: Невозможно вызвать setState (или forceUpdate) для размонтированного компонента.Это не работает, но это указывает на утечку памяти в вашем приложении.Для исправления отмените все подписки и асинхронные задачи в методе componentWillUnmount.

1 Ответ

0 голосов
/ 18 февраля 2019

Вы пытаетесь перейти на 2 разных экрана одновременно, на экран createWorker и Workers.Просто сделайте:
const resetAction = StackActions.reset({ index: 0, actions: [NavigationActions.navigate({ routeName: 'createWorker' })], }); this.props.navigation.dispatch(resetAction);

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