reactjs - ReactJS Routing - Update Router, when Router and Link are in separate components
问题描述
I am a beginner in ReactJS. I have been experiencing problems with the code below, which I have written:
class Navigation extends React.Component {
render() {
return (
<div>
<Router>
<button>
<Link to = "/home">Home</Link>
</button>
<button>
<Link to = "/portfolio">Portfolio</Link>
</button>
</Router>
</div>;
)
}
}
class Content extends React.Component {
render() {
return (
<React.Fragment>
<Router>
<Switch>
<Route exact path="/home">
<h1>Home</h1>
</Route>
<Route path="/portfolio">
<h1>Portfolio</h1>
</Route>
</Switch>
</Router>
</React.Fragment>;
)
}
}
class App extends React.Component {
render() {
var element = (
<div>
<Navigation />
<Content />
</div>;
)
return element;
}
}
ReactDOM.render(<App />, document.getElementById('root'));
Problem:
I would like the render()
function of Content
component to change every time a user clicks on a Link from the Navigation
component. How can I go about doing this?
解决方案
你不要Navigation
用路由器包装你的组件。因为只有links
那些将导航到组件。另一件事是App
用 main 包裹你的组件BrowserRouter
,我猜你已经在Router
这里导入了。
class Navigation extends React.Component {
render() {
return (
<div>
<button>
<Link to = "/home">Home</Link>
</button>
<button>
<Link to = "/portfolio">Portfolio</Link>
</button>
</div>;
)
}
}
class Content extends React.Component {
render() {
return (
<React.Fragment>
<Switch>
<Route exact path="/home">
<h1>Home</h1>
</Route>
<Route path="/portfolio">
<h1>Portfolio</h1>
</Route>
</Switch>
</React.Fragment>;
)
}
}
class App extends React.Component {
render() {
return (<Router>
<Navigation />
<Content />
</Router>);
}
}
ReactDOM.render(<App />, document.getElementById('root'));
希望这对你有用。
推荐阅读
- google-cloud-platform - 损坏的 DAG:应用程序的错误响应:429
- go - 如何更改列表中的元素?
- javascript - Eel.* 不是函数
- c - 检查一个号码是否包含在另一个号码中
- python - 无需托管 API 网关的多个服务的 FastAPI 身份验证
- imagemagick - 将 png 图像转换为有损 avif
- r - 我如何在 R 中绘制 3d 直方图?
- javascript - 如何在我的网站中实现搜索功能?
- python - 仅当它不在用户名中时,正则表达式才匹配“_”字符
- reactjs - 类型 'typeof import(/././projectfolder/node_modules/firebase' 上不存在属性 'initializeApp'