问题描述
我将尽力解释我要实现的目标以及当前的目标。我正在尝试打开一个模式窗口,该模式窗口根据触发事件的元素的项目名称来动态更新url,以打开模式窗口。
例如我将位于“ myapp.com/folders”,单击后,我想打开一个URL为“ myapp.com/folder/current-project-name”的模式窗口
我很确定我可以用React Router做到这一点,但我有点迷茫。
我认为我必须在我的App.js中的设置中声明Route,但问题是项目名称的变量位于其他组件(“ Folders.js”)中
我将分享一些代码,如果您需要更大的代码段来帮助我,请告诉我:
我当前的App.js:
function App() {
return (
<BrowserRouter>
<div className="App">
<Navigation />
<Switch>
<Route path="/" component={Home} exact />
<Route path="/folders" component={Folders} />
</Switch>
</div>
</BrowserRouter>
);
}
export default App;
Folders.js中发生的事情是我根据从Google Cloud Firestore得到的响应来映射元素。我要实现的目标是,一旦单击了地图中的任何元素,也将动态更新模态窗口的内容和网址。
查看Folders.js的代码段以及我如何在此处进行路由:
{/* Projects */}
<Section justifyContent="center" margin="56px 0 56px 0">
{!!response.length && (
/* Project Item */
<Container width="1080px">
{response.map(
({ organization,organization_avatar,projects,id }) => (
<Container
justifyContent="flex-start"
justifyContent="space-between"
margin="0 0 40px 0"
key={id}
>
<Organization>
<Avatar src={organization_avatar} />
{organization}
</Organization>
{projects &&
projects.map(
({ project_year,project_name,thumbnail,images }) => (
<Project
label={project_name}
year={project_year}
thumbnail={thumbnail}
to={`${props.match.url}/${project_name}`}
onClick={() => {
setTarget([
{
organization: organization,organization_avatar: organization_avatar,project_name: project_name,project_year: project_year,images: images,},]);
setModalOpen(true);
}}
/>
)
)}
</Container>
)
)}
</Container>
)}
</Section>
{/* Project Detail Overlay */}
{modalOpen ? (
<Route path={`${props.match.url}/${project_name}`}>
<ProjectModal
projectName={target[0].project_name}
organization={target[0].organization}
avatar={target[0].organization_avatar}
client="Pytajsa.sk"
selectedImg={target[0].images[0]}
gallery={target[0].images}
onClose={() => setModalOpen(false)}
/>
</Route>
) : null}
</div>
); }
我知道我的代码目前还不合适,但是我也完全迷失了。请帮忙。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)