reactjs中如何使用json在表格中显示数据?

Posted

技术标签:

【中文标题】reactjs中如何使用json在表格中显示数据?【英文标题】:how to display data in table using json in react js? 【发布时间】:2018-09-16 08:39:16 【问题描述】:

我有像this这样的JSON

我想使用这个 JSON 并使用 react js 在表格中显示数据。

这就是我从 JSON 文件中显示数据的方式。

import React,  Component  from 'react';
import data from './data.json';

class App extends Component 
  render() 
    return (
        <ul>
        
          data.map(function(movie)
            return <li>movie.id - movie.title</li>;
          )
        
        </ul>
    );
  


export default App;

如何从 URL 加载 JSON 并使用 reactjs 将其显示在表格中?

【问题讨论】:

【参考方案1】:

您可以使用固定数据表来显示来自json Response的数据。由于数据量大,常规表难以管理,这将是一个更好的选择。

文档在

https://github.com/schrodinger/fixed-data-table-2/blob/master/examples/ObjectDataExample.js

此链接将对您有所帮助。

【讨论】:

【参考方案2】:

一旦组件挂载,您可以fetch JSON,当您最终解决它时,您可以更新组件的状态:

import React,  Component  from 'react';


class App extends Component 
  // initially data is empty in state
  state =  data: [] ;

  componentDidMount() 
    // when component mounted, start a GET request
    // to specified URL
    fetch(URL_TO_FETCH)
      // when we get a response map the body to json
      .then(response => response.json())
      // and update the state data to said json
      .then(data => this.setState( data ));
  


  render() 
    return (
        <ul>
        
          this.state.data.map(function(movie)
            return <li key=movie.id>movie.id - movie.title</li>;
          )
        
        </ul>
    );
  


export default App;

如果您无法使用fetch,您可以使用其他一些库,例如superagent 或axios。或者你甚至可以退回到好的 ol' XMLHttpRequest

另一方面,在构建组件列表时,每个子组件都有一个唯一的key 属性很重要。我还在代码中更新了这一点,假设 movie.id

axios 代码示例:

axios.get(URL)
  .then(response => response.data)
  .then(data => this.setState( data ));

编辑:正如 trixn 在回复中所写,componentDidMount 是获取数据的首选位置。更新了代码。

EDIT 2:添加了 axios 代码。

【讨论】:

这是正确的,但componentDidMount()是获取数据的首选生命周期方法。 componentWillMount() 将以 UNSAFE_ 为前缀,从 react 16.3 开始,并且可能会在未来的 react 版本中被删除。见reactjs.org/docs/react-component.html#unsafe_componentwillmount。 我还写了一些不错的替代方案。 superagent 和 axios 等库使处理异步 HTTP 请求变得更容易、更符合人体工程学,您也可以使用 XMLHttpRequest。 我应该先在我的 react 应用中安装 fetch 吗? @菲利普 请告诉我@Phillip @Ahmad 我添加了一些示例代码,但我不知道我是否在为您编写代码对您不利。您应该学习浏览库文档和 API。我建议您查看 axios 文档,以便您了解发生了什么:)【参考方案3】:

可以使用 axios 发送 http 请求。

看起来像这样:

const response = await axios.get(your_url_here);
const items = response.data.items;

关于 await 关键字:How to use await key word on react native?

这是文档的 axios GitHub 页面:https://github.com/axios/axios

希望对您有所帮助。

【讨论】:

能否请你为我写完整的代码,因为我是新手,我不知道在你的答案中写下这两行 我使用 Redux Store 来存储我的对象,所以复制/粘贴我的代码无论如何都帮不了你。您可以调用一个函数,例如在按钮 onPress 事件上,并将这些行添加到此函数中。 (不要忘记 async before function 关键字)。把手弄脏,这是更好的学习方式。 请添加示例代码@WaLinke,因为我是新来的反应,我无法显示数据,因为 4 天......如果你能帮助我,我会很高兴......

以上是关于reactjs中如何使用json在表格中显示数据?的主要内容,如果未能解决你的问题,请参考以下文章

使用 React JS 显示和修改 JSON 数据(显示在表格中)

如何使用 Reactjs 显示 xml 数据

在 Javascript/Reactjs 中使用 Fetch API 和 map() 显示 JSON 数据

从 ReactJS 调用 REST Web 服务

如何在xcode的表格视图中显示json数据

在 react js 中添加指向 json 对象的链接