#reactjs #react-router #components
Вопрос:
Я новичок в React JS. Я создаю это приложение, но компонент не отображается. Я убедился, что все названия компонентов прописные. Я также убедился, что использую имя класса вместо класса. Это проблемы, которые я нашел в Интернете. Я не могу найти никаких других решений в Интернете. Я оставлю код здесь. Любые предложения, решения или рекомендации будут оценены по достоинству.
APP.JS
import Topbar from "./components/topbar/Topbar";
import "./App.css";
import Home from "./pages/home/Home";
import { BrowserRouter as Router, Switch, Route } from "react-router-dom";
import UserList from "./pages/userList/UserList";
import User from "./pages/user/User";
import NewUser from "./pages/newUser/NewUser";
import ProductList from "./pages/movieList/movieList";
import Product from "./pages/movies/Movie";
import NewProduct from "./pages/newMovie/newMovie";
import Complain from "./pages/complains/Complains";
import Request from "./pages/requests/requests";
import Sub from "./pages/subsList/subsList";
import Login from "./components/Login";
function App() {
return (
<Router>
<Topbar />
<Switch>
<Route exact path="/">
<Login />
</Route>
<Route exact path="/home">
<div className="container">
<Home />
</div>
</Route>
<Route path="/users">
<div className="container">
<UserList />
</div>
</Route>
<Route path="/user/:userId">
<div className="container">
<User />
</div>
</Route>
<Route path="/user/add">
<div className="container">
<NewUser />
</div>
</Route>
<Route path="/movies">
<div className="container">
<ProductList />
</div>
</Route>
<Route path="/movies/:movieId">
<div className="container">
<Product />
</div>
</Route>
<Route path="/movies/add">
<div className="container">
<NewProduct />
</div>
</Route>
<Route path="/complains">
<div className="container">
<Complain />
</div>
</Route>
<Route path="/requests">
<div className="container">
<Request />
</div>
</Route>
<Route path="/subscriptions">
<div className="container">
<Sub />
</div>
</Route>
</Switch>
</Router>
);
}
export default App;
Компонент
import "./newUser.css";
import React, { Component } from 'react';
import axios from 'axios';
export default class NewUser extends Component {
constructor(props) {
super(props);
this.onChangeUsername = this.onChangeUsername.bind(this);
this.onChangeEmail = this.onChangeEmail.bind(this);
this.onSubmit = this.onSubmit.bind(this);
this.state = {
username: '',
email:''
}
}
onChangeUsername(e) {
this.setState({
username: e.target.value
})
}
onChangeEmail(e) {
this.setState({
email: e.target.value
})
}
onSubmit(e) {
e.preventDefault();
const user = {
username: this.state.username,
email: this.state.email
}
console.log(user);
axios.post('http://localhost:5000/users/add', user)
.then(res => console.log(res.data));
this.setState({
username: ''
})
}
render(){
return (
<div className="newUser">
<h1 className="newUserTitle">New User</h1>
<form className="newUserForm">
<div className="newUserItem">
<label>Username</label>
<input type="text"
required
className="form-control"
value={this.state.username}
onChange={this.onChangeUsername} />
</div>
<div className="newUserItem">
<label>Email</label>
<input type="text"
required
className="form-control"
value={this.state.email}
onChange={this.onChangeEmail} />
</div>
<input type="submit" value="Create User" className="btn btn-primary" />
</form>
</div>
);
}
}
Комментарии:
1. Пожалуйста, отформатируйте свой код!
2. Я уже сделал это ?
3. В app.js ничто не является форматом. Дети маршрута похожи на родителей.
4. @Melvynx Готово, пожалуйста, взгляните, если можете, сейчас, спасибо!
5. Так что вот мой совет: НЕ используйте компонент класса. Используйте функциональный компонент: fr.reactjs.org/docs/components-and-props.html . Если вы всегда добавляете div с классом «контейнер»; создайте пользовательский компонент, который использует реквизиты маршрута, и добавьте элемент контейнера в этот компонент. Таким образом, вы можете использовать один и тот же компонент для каждого маршрута и избегать использования нескольких div. Я действительно не понимаю вашего вопроса… Извините
Ответ №1:
render
способ использования
<Route
path="/user/add"
render={() => (
<div className="container">
<NewUser />
</div>
)}
/>