使用钩子以编程方式更新功能组件中的反应导航标题标题

coo*_*s22 1 react-native react-navigation

关于反应导航 setParams() 的问题。我在 Reactiflux 上问过,但没有人回答。我正在尝试在函数组件中以编程方式设置标题。

从另一个 Stack Overflow 线程,追溯更新静态标题,像这样,工作:

const Comp = props => { ... };

Comp.navigationOptions = ({ navigation }) => ({
  title: 'Static Title'
});
Run Code Online (Sandbox Code Playgroud)

但是我需要从组件内部访问组件状态,这不起作用:

const Comp =({ navigation }) => {
 const [title, setTitle] = useState('');

 useEffect(() => {
     navigation.setParams({ title });
 }, [title]);

 return ( ... );
}
Run Code Online (Sandbox Code Playgroud)

如果 setParams() 是错误的方法,请赐教

编辑:补充一点,当我console.log(navigation)看到它正在更改navigation.state.params.title为正确的字符串时,但它没有显示为标题。

zay*_*rix 6

您需要获取标题参数并将其应用于标题:

Comp.navigationOptions = ({ navigation }) => ({
  title: navigation.getParam('title', /* your default title */)
});
Run Code Online (Sandbox Code Playgroud)

  • 这有效,谢谢。为了让任何找到此线程的人都清楚,我仍然需要在组件中使用 `setParams()` 来实际设置标题,然后 `getParams()` 可以稍后找到该标题 (2认同)