0

我有一个用例,我使用堆栈导航器从屏幕 1 导航到 2 在屏幕 2 上,用户可以选择执行某些操作。在从屏幕 2 移回 1 时,我想检查是否在屏幕 2 上执行了操作,如果是,则刷新屏幕 1 基本上我是将一种 doRefresh 参数从屏幕 2 传递回 1 并刷新屏幕 1 是doRefresh 是真的。

实现这一目标的最佳方法是什么?

4

1 回答 1

0

试试这个方法

function HomeScreen({ navigation }) {

  const callback = () => {
    // refresh data here ...
  }

  return (
    <View>
      <Text>Home Screen</Text>
      <Button
        title="Go to Details"
        onPress={() => {
          /* 1. Navigate to the Details route with params */
          navigation.navigate('Details', {callback: callback});
        }}
      />
    </View>
  );
}

function DetailsScreen({ route, navigation }) {
  /* 2. Get the param */
  const { callback } = route.params;

  return (
    <View>
      <Button title="Go back" onPress={() => { 
           callback(); // call callback here
           navigation.goBack(); // then navigate back
        } 
      />
    </View>
  );
}
于 2020-11-28T11:37:16.300 回答