反应-TypeError-this.state.movi​​es.map

我正在开发一个名为MoVid的电影租赁项目,该项目位于React和JavaScript中。这是我的代码:

App.js

Range("A1").Copy Range("E5")

Movie.jsx

import React,{ Component } from "react";
import Movies from "./components/movies";
import "./App.css";

function App() {
  return (
    <main classname="container">
      <Movies></Movies>
    </main>
  );
}

export default App;

fakeGenreService.js

import React,{ Component } from "react";
import { getMovies } from "../services/fakeMovieService";

class Movies extends Component {
    state = {};

    render() {
        return (
            <table classname="table">
                <thead>
                    <tr>
                        <th>Title</th>
                        <th>Genre</th>
                        <th>Stock</th>
                        <th>Rate</th>
                    </tr>
               </thead>
           <tbody>
               {this.state.movies.map(movie => (
                   <tr>
                       <td>{movie.title}</td>
                       <td>{movie.genre.name}</td>
                       <td>{movie.numberInStock}</td>
                       <td>{movie.dailyRentalRate}</td>
                   </tr>
               ))}
           </tbody>
         </table>
    );
  }
}

export default Movies;

fakeMovieService.js

export const genres = [
  { _id: "5b21ca3eeb7f6fbccd471818",name: "action" },{ _id: "5b21ca3eeb7f6fbccd471814",name: "Comedy" },{ _id: "5b21ca3eeb7f6fbccd471820",name: "Thriller" }
];

export function getGenres() {
  return genres.filter(g => g);
}

我看过:

React code throwing “TypeError: this.props.data.map is not a function”

React JS - Uncaught TypeError: this.props.data.map is not a function

但是他们没有帮助。

其他3个代码文件位于here中。 如果您需要更多信息或代码,请询问我!预先感谢!

wumao19910 回答:反应-TypeError-this.state.movi​​es.map

从一开始您就没有电影。在构造函数内部初始化一个数组:

state = {
    movies: [],};
,

this.state.movi​​es不是数组。它是未定义的。

,

state的{​​{1}}中,您需要添加Movie Component数组,例如

movies

然后更新电影状态。之后,您可以像这样映射state = { movies:[] }; 数组

movies
,

我运行了您的代码,发现的错误是Cannot read property 'map' of undefined

首先,您不会在任何地方使用getMovies,电影数据在Movies组件中不可用

第二,您应该将影片初始化为空数组。

您的Movies组件代码应如下所示:

import React,{ Component } from "react";
import { getMovies } from "../services/fakeMovieService";

class Movies extends Component {
    state = { movies: [] };

    componentDidMount() {
      this.setState({ movies: getMovies() });
    }

    render() {
        return (
            <table className="table">
                <thead>
                    <tr>
                        <th>Title</th>
                        <th>Genre</th>
                        <th>Stock</th>
                        <th>Rate</th>
                    </tr>
               </thead>
           <tbody>
               {this.state.movies.map(movie => (
                   <tr>
                       <td>{movie.title}</td>
                       <td>{movie.genre.name}</td>
                       <td>{movie.numberInStock}</td>
                       <td>{movie.dailyRentalRate}</td>
                   </tr>
               ))}
           </tbody>
         </table>
    );
  }
}

export default Movies;
,

我在同一个项目上工作,好像您在value方法分页功能中缺少括号:

const startIndex = (pageNumber-1) * pageSize;

return _(items)
   .slice(startIndex)
   .take(pageSize)
   .value();
本文链接:https://www.f2er.com/3097220.html

大家都在问