我有一个
/search
路线上的搜索结果列表。每个搜索命中都包含一个像这样的链接
<Link href={`/recipe?recipe=${JSON.stringify(recipe)}`} />
当我导航到
/recipe
时,一切都很好,查询参数都在那里。当我点击 back
时,一切都会崩溃。返回到 /search
后,如果我再次点击搜索命中,页面就会因 malformed URIcomponent
崩溃。我相信这与 Expo 路由器浅层合并查询参数有关,这意味着当导航回 search
时,第一次导航的参数不会被清除。我不知道该怎么做。我尝试强制清除 /search
中的参数,这会导致无限渲染,以及 recipe
中的参数,这会导致一堆 cannot read properties of undefined
破坏页面。我真的不明白合适的模式是什么。
React 导航建议不要使用 URL 来存储状态,但我个人认为这是一堆废话,也是他们有缺陷的框架的借口。我不想开设全球商店。必须有更好的方法。
查看 exo 文档中的片段
import { Link } from 'expo-router';
export default function Page() {
return (
<View>
<Link
href={{
pathname: "/user/[id]",
params: { id: 'bacon' }
}}>
View user
</Link>
</View>
);
}
目录结构在这里很重要。上面的示例使用下面的目录结构。另请注意
[id].js
文件名。
这里是上述代码的URL。