useLinkBuilder
useLinkBuilder
钩子允许我们构建一个路径,用于当前导航器状态中屏幕的链接。它返回一个函数,该函数接受要聚焦的屏幕的 name
和 params
,并根据 linking
选项 返回路径。
import { Link, CommonActions, useLinkBuilder } from '@react-navigation/native';
// ...
function DrawerContent({ state, descriptors }) {
const buildLink = useLinkBuilder();
return state.routes((route) => (
<Link
to={buildLink(route.name, route.params)}
action={CommonActions.navigate(route.name)}
>
{descriptors[route.key].options.title}
</Link>
));
}
此钩子旨在用于导航器中,以显示指向其中各个页面的链接,例如抽屉和标签导航器。如果您正在构建自定义导航器、自定义抽屉内容、自定义标签栏等,那么您可能需要使用此钩子。
需要注意一些重要事项
- 目标屏幕必须存在于当前导航器中。它不能位于父导航器中,也不能位于嵌套在子级中的导航器中。
- 它旨在仅用于自定义导航器,以保持它们在多个应用程序中的可重用性。对于您的常规应用程序代码,请直接使用路径,而不是为屏幕构建路径,或者使用
Link
和useLinkProps
,它们会透明地处理路径。