加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如何将数据从getJSON绑定到ReactJS状态

发布时间:2020-12-16 18:39:52 所属栏目:百科 来源:网络整理
导读:我一直在尝试从 JSON文件中获取数据并使用ReactJS将其绑定到我的页面 !DOCTYPE htmlhtmlhead lang="en" meta charset="UTF-8" titleDemo Fetch/title link rel="stylesheet" href="style.css" / script src="https://cdnjs.cloudflare.com/ajax/libs/react/0
我一直在尝试从 JSON文件中获取数据并使用ReactJS将其绑定到我的页面

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title>Demo Fetch</title>
    <link rel="stylesheet" href="style.css" />
    <script src="https://cdnjs.cloudflare.com/ajax/libs/react/0.13.3/react.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/react/0.13.3/JSXTransformer.js"></script>
    <script src="js/jquery-2.1.4.min.js"></script>
</head>
<body>
    <div id="content"></div>
    <script type="text/jsx">
        var DataBlock = React.createClass({
            getInitialState:function(){
                return {};
            },loadData:function() {
                var a=this;
                $.getJSON(this.props.url,function (obj) {
                    a.setState({data: obj})
                });
            },render: function() {
                return (
                        <div className="dataBlock" data={this.state.data}>
                            <h1>Sample data block</h1>
                                {this.loadData()}
                                <h3>{data.runtime}</h3>
                        </div>
                );
            }
        });
        React.render(
                <DataBlock url="small_data.json"/>,document.getElementById('content')
        );
    </script>
</body>
</html>

但是当我尝试显示页面时没有显示任何内容.我的代码出了什么问题?它的错误在哪里?为什么我不能将getJSON中的数据绑定到我的React组件的状态?

这是我的small_data.json文件:

{
  "movies": [
    {
      "abridged_cast": [
        {
          "characters": [
            "Dominic Toretto"
          ],"id": "162652472","name": "Vin Diesel"
        },{
          "characters": [
            "Brian O'Conner"
          ],"id": "162654234","name": "Paul Walker"
        }
      ],"runtime": 140,"synopsis": "Continuing the global exploits in the unstoppable franchise built on speed,Vin Diesel,Paul Walker and Dwayne Johnson lead the returning cast of Fast & Furious 7. James Wan directs this chapter of the hugely successful series that also welcomes back favorites Michelle Rodriguez,Jordana Brewster,Tyrese Gibson,Chris "Ludacris" Bridges,Elsa Pataky and Lucas Black. They are joined by international action stars new to the franchise including Jason Statham,Djimon Hounsou,Tony Jaa,Ronda Rousey and Kurt Russell.","title": "Furious 7","year": 2015
    }
  ],"runtime": 140
}

解决方法

你需要使用componentDidMount:function(){
加载数据

import React from 'react';
import ReactDOM from 'react-dom';

const data = {
  "movies": [
    {
      "abridged_cast": [
        {
          "characters": [
            "Dominic Toretto"
          ],"runtime": 140
}

const DataBlock = React.createClass({
    getInitialState: () => {
      return {
        data: null
      };
    },componentDidMount: () => {
                this.setState({
                    data: this.props.url
                });   
   },render() {
        return <div>
        <h3>runtime: {data.runtime}</h3>
        <h4>the data:</h4> 
        {this.state.data}
        </div>;
    }
});


ReactDOM.render(<DataBlock url={data}/>,document.getElementById('.container'));

https://jsfiddle.net/63nL7yfj/

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读