gpt4 book ai didi

javascript - React Component 在使用 React router 4 时不呈现

转载 作者:行者123 更新时间:2023-11-30 11:22:19 26 4
gpt4 key购买 nike

我正在开发一个简单的 React 演示项目。我有一个 Home 组件,当直接放在 main.js 中时会呈现,但是当放在 Routes.js 中的 Router 中时,它不是呈现。谁能告诉我我在这里做错了什么?

main.js 文件

import React from "react";
import {render} from "react-dom";
import {App} from "./app/App";
import Routes from "./app/Routes";

render( <Routes />,
document.getElementById("root")
)

Routes.js 文件

import React from "react";

import {
BrowserRouter as Router,
Route,
Switch,
} from "react-router-dom";

import {App}
from "./App";

import Home from "./components/Home";

export default function Routes(props) {

console.log('Routes');
return (
<Router>
<App>
<Switch>
<Route path="/" exact component={Home} />
</Switch>
</App>
</Router>
)
}

App.js 文件

import React from "react";
import Header from "./components/Header";

export class App extends React.Component {

render() {
console.log("App render");

return (
<div>
<h1> Welcome to React </h1>
<Header/>
</div>
)
}
}

Header.js 文件

import React, {Component} from 'react';
import {NavLink} from 'react-router-dom';

export default class Header extends Component {

render() {
console.log("Header render");

return (
<div>
<NavLink to="/" exact>
Home
</NavLink>
</div>
)
}
}

Home.js 文件

import React, {Component} from "react";

export default class Home extends Component {

render() {
console.log("Home render");

return (
<div>
<h2>Hello World!</h2>
</div>
)
}
}

最佳答案

这是因为你使用 App 组件作为整个应用程序的包装器,并将 Switch 定义为 App 组件的子组件,所以你需要使用 this.props.children 在 App 内。

像这样:

export class App extends React.Component {
render() {
console.log("App render");
return (
<div>
<h1> Welcome to React </h1>
<Header/>
{this.props.children}
</div>
)
}
}

考虑这个例子可以使整个画面更清晰,如果你写:

<App>
<Home />
</App>

意味着 Home 将作为子组件传递给 App 组件,它不会自动在 App 内呈现,您需要将 this.props.children 放在 App 内的某个地方。

关于javascript - React Component 在使用 React router 4 时不呈现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49333678/

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