From 3be83dd1f24fe7967e0db5f8f36a15f46e4d9f9a Mon Sep 17 00:00:00 2001 From: dongzhihan Date: Mon, 5 Aug 2024 18:45:32 +0800 Subject: [PATCH 1/2] =?UTF-8?q?docs:=20[Issues:=20#IAHY78]=20=E4=BF=AE?= =?UTF-8?q?=E6=94=B9react-navigation-header-buttons=E6=8C=87=E5=AF=BC?= =?UTF-8?q?=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- zh-cn/react-navigation-header-buttons.md | 232 ++++++++++++----------- 1 file changed, 126 insertions(+), 106 deletions(-) diff --git a/zh-cn/react-navigation-header-buttons.md b/zh-cn/react-navigation-header-buttons.md index 489a9a69..fcda4100 100644 --- a/zh-cn/react-navigation-header-buttons.md +++ b/zh-cn/react-navigation-header-buttons.md @@ -18,6 +18,7 @@ ## 安装与使用 + 进入到工程目录并输入以下命令: #### **npm** @@ -32,8 +33,8 @@ npm i react-navigation-header-buttons@12.0.0 yarn add react-navigation-header-buttons@12.0.0 ``` +在 tsconfig.json 文件中添加如下代码: -在tsconfig.json文件中添加如下代码: ```json "compilerOptions": { ... @@ -46,7 +47,9 @@ yarn add react-navigation-header-buttons@12.0.0 } ``` -在metro.config.js文件中添加如下代码: + +在 metro.config.js 文件中添加如下代码: + ```js const config = { ... @@ -67,61 +70,101 @@ module.exports = mergeConfig( > [!WARNING] 使用时 import 的库名不变。 +此示例 demo 依赖以下三方库,请查看对应文档: + +- [@react-navigation/stack](/zh-cn/react-navigation-stack.md) +- [@react-navigation/native](/zh-cn/react-navigation-native.md) + ```js -import * as React from 'react'; -import MaterialIcons from '@expo/vector-icons/MaterialIcons'; +import * as React from "react"; +import { Button, View, Text, Alert } from "react-native"; +import { NavigationContainer } from "@react-navigation/native"; +import { createNativeStackNavigator } from "@react-navigation/native-stack"; +import { HeaderButtonsProvider } from "react-navigation-header-buttons/HeaderButtonsProvider"; import { HeaderButtons, Item, - HiddenItem, - OverflowMenu, - Divider, - ItemProps, - HiddenItemProps, HeaderButtonProps, - HeaderButton, -} from 'react-navigation-header-buttons'; -import { Text } from 'react-native'; - -const MaterialHeaderButton = (props: HeaderButtonProps) => ( - -); - -const EditItem = ({ onPress }: Pick) => { - return ; -}; - -const ReusableHiddenItem = ({ onPress }: Pick) => ( - -); - -export function UsageWithIcons({ navigation }) { + OverflowMenu, + HiddenItem, +} from "react-navigation-header-buttons"; + +const stackType = "native"; +const Stack = createNativeStackNavigator(); + +function HeaderButtonsTester({ navigation }) { + const MaterialHeaderButton = (props: HeaderButtonProps) => { + return ( + + {props.title} + + ); + }; React.useLayoutEffect(() => { navigation.setOptions({ - title: 'Demo', + title: "导航栏", headerRight: () => ( - alert('search')} - /> - alert('Edit')} /> - ( - - )} - > - alert('hidden1')} /> - - alert('hidden2')} /> + + Icon}> + Alert.alert("hidden1")} + /> + Alert.alert("hidden2")} + /> ), }); }, [navigation]); + return ( + + + HeaderButton默认渲染按钮的组件 + HeaderButtonComponent中可以接收来自Item中的props + + + ); +} +function HomePage({ navigation }) { + return ( + +