从 react-bootstrap-table-next 路由到新组件?
Routing to a new component from react-bootstrap-table-next?
我有一个 table 的编码问题。当用户单击问题名称时,我希望应用程序路由到带有道具的问题组件的页面。
现在我正在尝试通过使用格式化程序然后使用 react-router-dom 创建一个路由来做到这一点。但是,组件只是在 table 内部打开,而不是在其自己的页面中打开组件。
function nameFormatter(cell, row) {
return (
<>
<BrowserRouter>
<Switch>
<Route
path={"/problem/" + cell}
render={() => (
<Problem
id={row.id}
/>
)}/>
</Switch>
<NavLink to={"/problem/" + cell}>{cell}</NavLink>
</BrowserRouter>
</>
);
}
为了更好的演示,这是我的沙盒:https://codesandbox.io/s/optimistic-germain-jsc06?file=/src/index.js
我可能想多了,我可能很累,但如果有任何帮助,我们将不胜感激。
您的路由结构有些不正确。一般来说,您的 Home
应用实际上应该只是一堆路由定义。这样你就可以创建这种“顶级”路由器。另一方面,你让你的 <BrowserRouter>
children 从属于那个 table。
您的 Home
元素应该是这样的:
const Home = () => {
return (
<BrowserRouter>
<Switch>
<Route exact path={"/"}>
<ProblemTable />
</Route>
{problems.map((item) => (
<Route
key={item.id}
path={"/problem/" + item.name}
render={() => <Problem id={item.id} />}
/>
))}
</Switch>
</BrowserRouter>
);
};
所以 <ProblemTable />
是 table 的问题并在 /
处呈现,其余路由在其正下方定义。
这里有一份 Sandbox 给你。
我有一个 table 的编码问题。当用户单击问题名称时,我希望应用程序路由到带有道具的问题组件的页面。
现在我正在尝试通过使用格式化程序然后使用 react-router-dom 创建一个路由来做到这一点。但是,组件只是在 table 内部打开,而不是在其自己的页面中打开组件。
function nameFormatter(cell, row) {
return (
<>
<BrowserRouter>
<Switch>
<Route
path={"/problem/" + cell}
render={() => (
<Problem
id={row.id}
/>
)}/>
</Switch>
<NavLink to={"/problem/" + cell}>{cell}</NavLink>
</BrowserRouter>
</>
);
}
为了更好的演示,这是我的沙盒:https://codesandbox.io/s/optimistic-germain-jsc06?file=/src/index.js
我可能想多了,我可能很累,但如果有任何帮助,我们将不胜感激。
您的路由结构有些不正确。一般来说,您的 Home
应用实际上应该只是一堆路由定义。这样你就可以创建这种“顶级”路由器。另一方面,你让你的 <BrowserRouter>
children 从属于那个 table。
您的 Home
元素应该是这样的:
const Home = () => {
return (
<BrowserRouter>
<Switch>
<Route exact path={"/"}>
<ProblemTable />
</Route>
{problems.map((item) => (
<Route
key={item.id}
path={"/problem/" + item.name}
render={() => <Problem id={item.id} />}
/>
))}
</Switch>
</BrowserRouter>
);
};
所以 <ProblemTable />
是 table 的问题并在 /
处呈现,其余路由在其正下方定义。
这里有一份 Sandbox 给你。