КОМПОНЕНТ REACT JS НЕ ОТОБРАЖАЕТСЯ

#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>
 )}
/>