【问题标题】:React App: Need advise on mapping json data into tableReact App:需要建议将 json 数据映射到表中
【发布时间】:2021-10-04 20:03:33
【问题描述】:

我必须从 api 获取数据并将其映射到表。这是我的代码。有人可以建议地图功能吗?谢谢。

import { useEffect, useState } from 'react';
import axios from 'axios';

const MovieList = () => {

    const [movies, setMovies] = useState([]);
    useEffect(() => {
    const fetchItems = async () => {
      const result = await axios(
        `api endpoint url`
      )
      setMovies(result.data)
    }
    fetchItems()
  }, [])
    
  return (
    #omit codes for table heads 
          <tbody>
          {movies.map(movie => (
            <tr>
                <td>{movie.results.year}</td>
                <td>{}</td>
                <td>{}</td>
                <td>{}</td>
                <td>{}</td>
            </tr>
            ))}
          </tbody>
}
export default MovieList;

【问题讨论】:

  • 你是什么意思“建议地图功能”? movie.results.year 没有意义,因为根据您显示的内容,movie.results 是一个 数组。
  • 在此处提供实际的 json 对象

标签: javascript reactjs api


【解决方案1】:

将电影更新为

setMovies(result.data.results)

然后代替

movies.map()

使用

movies[0].films.map(movie =&gt; {})

【讨论】:

    【解决方案2】:

    您的回复似乎是 result 是每年的电影数组(另一个数组)。所以,丑陋的方法就是仔细遍历这些数组,例如:

    
          {movies.map((movie: any) => {
            movie.results.map((yearData: any) => (
              <tr>
                <td>{yearData.year}</td>
                {yearData.films.map((film: any) => (
                  <Fragment>
                    <td>{film['Detail URL']}</td>
                    <td>{film.Film}</td>
                    <td>{film['Producer(s)']}</td>
                    <td>{...etc}</td>
                  </Fragment>
                ))}
              </tr>
            ));
          })}
    
    

    但是如果你可以在后端做出更好的响应,或者在前端对结果进行一些预处理,我建议你对按年份分组的电影进行响应,这样会更容易。例如:

    [
      { 
        year: '2021',
        films: [{...}]
      },
      { 
        year: '1973',
        films: [{...}]
      },
      { 
        year: '1927 / 28 [A] (1st)',
        films: [{...}]
      },
      ...
    ]
    
    

    【讨论】:

    • 谢谢路易斯。我一直在搜索有关如何处理您使用 node.js 建议的数据的教程,但我没有找到任何好的资源。关于 node.js 的资料有很多,但我确实找不到任何有用的资料。您能否推荐我如何实现您建议的第二种方法?谢谢。
    • 一种方法是使用来自 Lodash 的库 (lodash.com) 中的 _.groupBy。您可以使用示例 json 编辑帖子吗?
    猜你喜欢
    • 2020-02-08
    • 2012-12-03
    • 2021-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-16
    • 1970-01-01
    相关资源
    最近更新 更多