我有一个Page
组件,它在App
中使用</Outlet>
呈现。在Page
组件中,我想使用一个在App
中设置的状态(通过搜索input
提供的简单文本)。
我能够通过从App
执行的navigate("/page", { state: { searchQuery } });
在Page
挂载期间发送和接收状态,但不幸的是,当searchQuery
的状态发生变化时,这种方法失败了。
是否有一种简单的机制允许Page
侦听React Router v6中App selectQuery
状态的更改?如果有,解决方案是什么?
// index.tsx
const router = createBrowserRouter(
createRoutesFromElements(
<Route path="/" element={<App />}>
<Route path="page" element={<Page />}></Route>
</Route>
)
);
// App.tsx
function App() {
const [searchQuery, setSearchQuery] = useState<string>("");
return (
// ...
<AppBar component="nav">
// Input text field which sets setSearchQuery onChange
</AppBar>
// ...
<Outlet />
// ...
}
// Page.tsx
function Page() {
//...
return (
// ...
// usage of a App searchQuery
// ...
}
1条答案
按热度按时间ymzxtsji1#
您可以使用Outlet上下文来完成此操作:
有关详细信息,请参阅此文档:https://reactrouter.com/en/6.8.0/hooks/use-outlet-context