reactjs - React Navigation - 右键功能
问题描述
我有一个导航:
const MessageStack = createStackNavigator();
const MessageNavigator = () => (
<MessageStack.Navigator>
<MessageStack.Screen name="Messages" component={MessagesScreen} />
<MessageStack.Screen
name="Chat"
component={ChatScreen}
options={({ route }) => ({
title: route.params.thread.username,
headerRight: () => (
<Text style={{paddingEnd:10}} onPress={}>View Profile</Text>
),
})}
/>
</MessageStack.Navigator>
)
我的聊天屏幕:
function ChatScreen({ route }) {
const { thread } = route.params
const [messages, setMessages] = useState([]);
const createTwoButtonAlert = () =>
Alert.alert(
"Alert Title",
"My Alert Msg",
[
{
text: "Cancel",
onPress: () => console.log("Cancel Pressed"),
style: "cancel"
},
{ text: "OK", onPress: () => console.log("OK Pressed") }
]
);
从导航栏中的 rightButton :
headerRight: () => (
<Text style={{paddingEnd:10}} onPress={}>View Profile</Text>
),
我想在我的 chatScreen 中调用该函数createTwoButtonAlert
并显示警报。
解决方案
react-native-navigation网站上有一个示例。
在此示例中,您headerRight
在 Screen 组件而不是路由器组件中定义属性。
function ChatScreen ({ route, navigation }) {
const { thread } = route.params
const [messages, setMessages] = useState([]);
useLayoutEffect(() => {
const createTwoButtonAlert = () => {
Alert.alert(
'Alert Title',
'My Alert Msg',
[
{
text: 'Cancel',
onPress: () => console.log('Cancel Pressed'),
style: 'cancel'
},
{ text: 'OK', onPress: () => console.log('OK Pressed') }
]
);
};
navigation.setOptions({
headerRight: () => (
<Text onPress={() => createTwoButtonAlert()}>View Profile</Text>
),
});
}, [navigation]);
}
推荐阅读
- python - 如何让 Flask_restplus 使用来自 app_errorhandler 的错误处理程序?
- ms-access - 错误:“操作必须使用可更新的查询” - MS Access
- clojure - 无法从 Eclipse 运行 clara rules clojure 程序
- sql - 从 CSV 导入事务:错误:平面文件源 1 未通过预执行阶段并返回错误代码 0xC020200E
- composite-primary-key - 如何在 clickhouse 中为数据库设置复合主键?
- java - Magnolia 6.0 Tomcat 9 禁止访问 /.resources*
- python - 在 conda/MacOS 上使用 pip 安装 mmh3 包
- javascript - 如何删除子数组中的重复项?
- reactjs - React Native 遍历数组对象并计算总和值
- vue.js - 如何在 webpack 中正确注入 app 元素?- 接收 [Vue 警告]:找不到元素:#app