【问题标题】:Nothing is Displaying on my browser after running npm start in react app在反应应用程序中运行 npm start 后,我​​的浏览器上没有显示任何内容
【发布时间】:2022-01-15 06:02:02
【问题描述】:

安装 react-router-dom 版本 6 后,我尝试运行 npm start,但我在控制台中得到一个没有错误的空白页面。第一个代码下面是我要显示的屏幕的代码。请有人帮助我,告诉我我在这里做错了什么。

import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';

import reportWebVitals from './reportWebVitals';
import MovieList from './component/movieList';

import  { BrowserRouter as Router, Routes, Route } from 'react-router-dom';


ReactDOM.render(
  <React.StrictMode>
    <Router>
    <Routes>
      <Route exact path = "/welcome" element = {MovieList}/>
    </Routes>
    </Router>
    
  </React.StrictMode>,
  document.getElementById('root')
);

reportWebVitals();
import { useState } from "react";

function MovieList() {
  const [searchTerm, setSearchTerm] = useState("")
  const [movies, setMovie] = useState([])
  const handleMovieSearchChange = (e) => {
    setSearchTerm(e.target.value);
  };

  const fetchMovie = (movieName) => {
    const searchUrl = `https://www.omdbapi.com/?s=${movieName}&page=2&apikey=2c2c85ae`;

    fetch(searchUrl)
      .then((response) => response.json())
      .then((result) => {
        setMovie(result.Search);
      });
  };

  const movieItems = movies.map((movie, index) => {
    return (
      <div key={index}>
       <img src={movie.Poster} alt="" />
        <h3>{movie.Title}</h3>
      </div>
    )
  })

  return (
    <div>
      <h1>Movie List Page</h1>Search
      <input type={"text"} onChange={handleMovieSearchChange} />
      <button onClick={() => fetchMovie(searchTerm)}>Search</button>
      {movieItems}
    </div>
  );
}

export default MovieList;

【问题讨论】:

  • 您要在浏览器中点击哪个页面?
  • 电影列表页面
  • 我为要在浏览器上显示的页面添加了代码
  • 您在浏览器中打开的网址是什么?
  • MovieList 组件渲染在/movie 路径,您是否尝试检查该组件是否在/movie 渲染?

标签: javascript reactjs create-react-app


【解决方案1】:

我猜它是一个组件: &lt;Route exact path = "/welcome" element = {MovieList}/&gt;

改为 &lt;Route exact path = "/welcome" element = {&lt;MovieList/&gt;}/&gt;

【讨论】:

    【解决方案2】:

    您得到一个空白屏幕,因为您没有为主路由 / 渲染任何组件/页面。当 react 应用程序渲染最初渲染具有path="/" 的页面时。有两种方法可以修复它,您可以在路径 / 处呈现欢迎页面,或者如果用户点击主页或 / 路径,您可以将用户重定向到欢迎屏幕。

    第一种方法

    import React from 'react';
    import ReactDOM from 'react-dom';
    import './index.css';
    
    import reportWebVitals from './reportWebVitals';
    import MovieList from './component/movieList';
    
    import  { BrowserRouter as Router, Routes, Route } from 'react-router-dom';
    
    
    ReactDOM.render(
      <React.StrictMode>
        <Router>
        <Routes>
          <Route exact path = "/" element = {MovieList}/>
        </Routes>
        </Router>
        
      </React.StrictMode>,
      document.getElementById('root')
    );
    
    reportWebVitals();
    

    第二种方法

    import React from 'react';
    import ReactDOM from 'react-dom';
    import './index.css';
    
    import reportWebVitals from './reportWebVitals';
    import MovieList from './component/movieList';
    
    import  { BrowserRouter as Router, Routes, Route, Navigate } from 'react-router-dom';
    
    
    ReactDOM.render(
      <React.StrictMode>
        <Router>
        <Routes>
          <Route exact path = "/welcome" element = {MovieList}/>
          <Route path="/" element={<Navigate replace to="/welcome" />} />
        </Routes>
        </Router>
        
      </React.StrictMode>,
      document.getElementById('root')
    );
    
    reportWebVitals();
    

    【讨论】:

    • 第一个没有解决问题,控制台没有返回任何错误,浏览器也没有返回任何内容。所以我卸载了第 6 版并安装了第 5 版并使用了 Switch 而不是 Routes,现在一切都很好。
    猜你喜欢
    • 2020-09-17
    • 1970-01-01
    • 2020-06-10
    • 1970-01-01
    • 1970-01-01
    • 2023-01-25
    • 2021-04-14
    • 2015-02-10
    • 1970-01-01
    相关资源
    最近更新 更多