React-Native-Navigation 如何在 render/navigation 之前动态设置 header 标题
React-Native-Navigation How to dynamically set header title before render/navigation
我对 React Native 比较陌生,遇到了一个我无法解决甚至找不到相关问题的问题。
我有一个简单的应用程序,它有七个按钮,一个用于一周中的每一天,我想导航“日”屏幕并显示我在 header 标题中单击的那一天,但我试过了将日期作为参数传递,然后在纵横比中设置它,但这会在渲染后稍有延迟地更新标题。我已经用 Redux 试过了,但它看起来有点复杂,必须有一些更简单的方法来做到这一点。
编辑
这看起来像是在渲染之前设置了 header 标题,但它给了我一个警告
Warning: Cannot update a component from inside the function body of a different component.
主屏幕代码
onPress={() => {
props.navigation.navigate("DayScreen", { name: title });
}}
DayScreen 代码
const [name, setName] = useState(props.route.params.name);
props.navigation.setOptions({ title: name });
使用 React Navigation 文档中的 useLayoutEffect
挂钩 as advised:
import React, { useLayoutEffect } from 'react';
const YourScreen = ({ navigation, route }) => {
// Pass the title as a parameter when navigating
const { title } = route.params;
useLayoutEffect(() => {
navigation.setOptions({
title,
});
}, [navigation]);
// render something
};
export default YourScreen;
我对 React Native 比较陌生,遇到了一个我无法解决甚至找不到相关问题的问题。
我有一个简单的应用程序,它有七个按钮,一个用于一周中的每一天,我想导航“日”屏幕并显示我在 header 标题中单击的那一天,但我试过了将日期作为参数传递,然后在纵横比中设置它,但这会在渲染后稍有延迟地更新标题。我已经用 Redux 试过了,但它看起来有点复杂,必须有一些更简单的方法来做到这一点。
编辑
这看起来像是在渲染之前设置了 header 标题,但它给了我一个警告
Warning: Cannot update a component from inside the function body of a different component.
主屏幕代码
onPress={() => {
props.navigation.navigate("DayScreen", { name: title });
}}
DayScreen 代码
const [name, setName] = useState(props.route.params.name);
props.navigation.setOptions({ title: name });
使用 React Navigation 文档中的 useLayoutEffect
挂钩 as advised:
import React, { useLayoutEffect } from 'react';
const YourScreen = ({ navigation, route }) => {
// Pass the title as a parameter when navigating
const { title } = route.params;
useLayoutEffect(() => {
navigation.setOptions({
title,
});
}, [navigation]);
// render something
};
export default YourScreen;