gpt4 book ai didi

reactjs - 使用 React Router 6 将 props 从 outlet 传递给 parent

转载 作者:行者123 更新时间:2023-12-05 02:33:54 25 4
gpt4 key购买 nike

我正在使用 React Router V6,我想弄清楚我是否可以从使用 Outlet 组件呈现的嵌套路由传递 Prop 。我似乎无法弄清楚。谁能帮忙?

例如试图将标题 Prop 从 BleTable(“蓝牙”)传递到 App

ReactDOM.render(
<React.StrictMode>
<BrowserRouter>
<Routes>
<Route path="/" element={<App title="**Title from outlet**" />} >
<Route path="ble" element={<BleTable title="Bluetooth"/>}/>
<Route path="create-user" element={<UserForm/>}/>
</Route>
</Routes>

</BrowserRouter>
</React.StrictMode>,
document.getElementById('root')
);

最佳答案

你不能传递 props 本身,但你可以向 App 正在渲染的 Outlet 提供上下文值,路由组件可以通过 useOutletContext hook 访问.

例子:

const AppLayout = () => {
const [title, setTitle] = useState("");

return (
<>
<h1>App: {title}</h1>
<Outlet context={{ setTitle }} /> // <-- provide context value
</>
)
};

const BleTable = ({ title }) => {
const { setTitle } = useOutletContext(); // <-- access context value

return (
<>
<h1>BleTable</h1>
<button type="button" onClick={() => setTitle(title)}>Update App Title</button>
</>
);
}

...

<BrowserRouter>
<Routes>
<Route path="/" element={<AppLayout />}>
<Route path="ble" element={<BleTable title="Bluetooth" />} />
<Route path="create-user" element={<UserForm/>}/>
</Route>
</Routes>
</BrowserRouter>

Edit passing-props-from-outlet-to-parent-using-react-router-6

关于reactjs - 使用 React Router 6 将 props 从 outlet 传递给 parent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70858139/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com