我需要使用将对象从一个屏幕传递到另一个屏幕expo-router
我有一个显示包含项目的 FlatList 的屏幕和一个显示有关该项目的更多信息的详细信息屏幕。附加信息位于项目对象内,因此不需要再次调用 API。
项目模型如下:
{
id: "123",
title: "Some Title",
imageURL: "https://...",
...other: "some other data"
}
Run Code Online (Sandbox Code Playgroud)
使用 expo-router 我相信我需要提供 URL 参数,但是,对于包含图像 URL 的数据,这是不切实际的。
如何只传递不带 URL 参数的对象
目前我在函数中获取该项目如下;
const getDetails = (item) => {
router.push({ pathname: `/details/${item.id}`, params: { item } });
};
Run Code Online (Sandbox Code Playgroud)
如何在第二个屏幕中显示此内容?
基于文件的路由并没有完全适合我。早期的 NextJS pages文件路由很容易工作。由于某种原因,我还没有转换为基于世博路线的文件。可能是因为堆栈、选项卡和插槽的组合。我一直在阅读动态路线文档。当我从选项卡屏幕中导航到 时/pattern/[id],由于 Expo 找不到路线,翻译中有些内容丢失了。我尝试了各种各样的方法,但我认为这与我的文件夹结构有关。我想要的是:目的地/pattern/[id]是(选项卡)的子级,而不是搜索。
app
|__(auth)
|__ _layout.tsx
|__(tabs)
|__ index.tsx
|__ _layout.tsx
|
|__ search
| |__ index.tsx // <-- from where I navigate from
| |__ _layout.tsx
|
|__ pattern // <-- where I want to navigate to
| |__ _layout.tsx
| |__ [id].tsx // <-- dynamic pattern id name
|__ // other tabs content is ok since no navigation
Run Code Online (Sandbox Code Playgroud)
这是我的选项卡的 _layout :
export default function TabLayout() {
return …Run Code Online (Sandbox Code Playgroud) 我正在将我的应用程序从react-navigation移动到expo-router,但我还没有找到键入路线的解决方案。
我知道有一个功能可以根据文件路由和动态路由(如 [slug].tsx)自动输入路由。
但是,如果我的参数是像 { id,description,name,age} 这样的对象,那么这些类型将如何工作?我的文件的名称应该是什么?
请帮忙!:)
我希望从 <Link> 中输入参数和路由名称的 Push 或 href
router.push({
pathname: 'home',
params: {
id: 1,
description: '',
age: 1,
name: ''
}
})
Run Code Online (Sandbox Code Playgroud)
也可以在 useLocalSearchParams() 处正确接收它
const Home = () => {
const { id, description, age, name } = useLocalSearchParams();
return <></>
}
Run Code Online (Sandbox Code Playgroud) 当我们在使用expo路由器时更改某些内容时,expo GO android应用程序自动刷新功能会将我们重定向到第一页。我们怎样才能让它保持我们正在走的路线呢?