React Navigation - 在 child 组件中收听 parent 操作

React Navigation - Listen parent action in child component

我有一个选项卡导航器屏幕,其中有 2 个选项卡。 parent 堆栈在 header 中有按钮,它们的工作方式应该不同 w.r.t 两个不同的 screens/Tabs。

现在,我所做的是-

navigation.setOptions({
  headerRight: () => (
    <TouchableOpacity>
      <Text>Update</Text>
    </TouchableOpacity>
  ),
});

如何处理选项卡导航器下两个组件的 Save 按钮点击?

注意 - 我正在使用 react-navigation@v6

在这里,我想自己给出我的问题的答案。

解决方案是不从 Parent 导航器设置导航右键,从每个选项卡屏幕访问 parent 导航并设置右侧 header。

您还应该使用 useFocusEffect 添加它,因为导航器的不同选项卡可能会有所不同。以下是您的操作方法 -

import { useFocusEffect } from '@react-navigation/native';

useFocusEffect(() => {
    navigation.getParent().setOptions({
      headerRight: () => (
        <TouchableOpacity 
          disabled={true}
          style={styles.headerRight}>
          <Text style={{ color: 'black' }}>Save</Text>
        </TouchableOpacity>
      ),
    });
});