Javascript 如何使用堆栈操作重置react导航中的路由?

Javascript 如何使用堆栈操作重置react导航中的路由?,javascript,react-native,react-navigation,Javascript,React Native,React Navigation,孩子们,我如何用堆栈操作重置react导航中的路由,并使用componentDidUpdate代替componentDidMount 可能吗 这是我的代码-WorkersView: import React from 'react'; import { Text, FlatList, View, TouchableOpacity, StatusBar } from 'react-native'; import { Container, Content, ListItem, List, Icon,

孩子们,我如何用堆栈操作重置react导航中的路由,并使用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。现在stackaction可以工作了,但在WorkersView中我有一个错误:


警告:无法对未安装的组件调用setState(或forceUpdate)。这是一个no-op,但它表示应用程序中存在内存泄漏。若要修复,请取消componentWillUnmount方法中的所有订阅和异步任务。

您试图同时转到两个不同的屏幕,即屏幕
createWorker
Workers
。只要做:
const resetAction=StackActions.reset({
索引:0,
操作:[NavigationActions.navigate({routeName:'createWorker'})],
});

这个.props.navigation.dispatch(resetAction)

您试图同时转到两个不同的屏幕,即屏幕
createWorker
Workers
。只要做:
const resetAction=StackActions.reset({
索引:0,
操作:[NavigationActions.navigate({routeName:'createWorker'})],
});

这个.props.navigation.dispatch(resetAction)

我尝试了它,但得到了以下警告:警告:无法对未安装的组件调用setState(或forceUpdate)。这是一个no-op,但它表示应用程序中存在内存泄漏。若要修复此问题,请取消componentWillUnmount方法中的所有订阅和异步任务。我尝试了此方法,但收到以下警告:警告:无法对已卸载的组件调用setState(或forceUpdate)。这是一个no-op,但它表示应用程序中存在内存泄漏。要修复此问题,请取消componentWillUnmount方法中的所有订阅和异步任务。