亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

ReactJS 渲染數據,從 laravel 控制器作為 json 字符串傳遞

ReactJS 渲染數據,從 laravel 控制器作為 json 字符串傳遞

至尊寶的傳說 2022-08-04 16:55:29
我對 React 完全陌生。我想使用laravel從數據庫中檢索數據;在我的控制器中,我接收數據并以json形式發送,如下所示public function index(){    $data =  DB::table('posts')->get();    return view('welcome')->withData(json_encode($data));}它完美地工作。在我的家庭視圖中,我像這樣調用反應。        <div id="example" data="{{ $data }}"></div>        <script src="js/app.js" ></script>這是例子.js:    import React, { Component } from 'react';    import ReactDOM from 'react-dom';    export default class Example extends Component    {        constructor(props)        {            super(props);            console.log(props.data);//[{"id":1,"name":"Laravel","created_at":null,"updated_at":null},{"id":2,"name":"Reacts Js","created_at":null,"updated_at":null}]            const json = JSON.parse(props.data);            var L = json.length;//2            for(var i =0 ; i < L ; i++)            {                console.log(json[i].name);//i==0 : Laravel                                        // i==1 : Reacts Js            }        }        render()        {            return (                <div className="container">                    <div className="row justify-content-center">                        <div className="col-md-8">                            <div className="card">                                <div className="card-header">Example Component</div>                                for(var i =0 ; i < L ; i++)                                {                                    <div>{json[i].name}</div>                                }                                <div className="card-body">I'm an example component!</div>                            </div>                        </div>                    </div>                </div>                    );        }    }    if (document.getElementById('example')) {        var data = document.getElementById(('example')).getAttribute('data');        ReactDOM.render(<Example data={data}/>, document.getElementById('example'));    }在瀏覽器控制臺中,我可以看到json[i].name完美!但是在組件中,我有這個問題,有以下錯誤:未捕獲的類型錯誤:無法讀取未定義的屬性“名稱”。
查看完整描述

1 回答

?
嗶嗶one

TA貢獻1854條經驗 獲得超8個贊

是因為 JSON 在 它的范圍內,在它之外不可見。您可能希望將數據存儲在組件狀態中,并將用戶存儲在呈現中。constructor


您可以使用 then .map 來迭代 中的 JSON 數據。render()


class Example extends Component {

  constructor(props) {

    super(props);


    console.log(props.data);//[{"id":1,"name":"Laravel","created_at":null,"updated_at":null},{"id":2,"name":"Reacts Js","created_at":null,"updated_at":null}]


    this.state = {

      json:JSON.parse(props.data)

    };

  }


  render() {

    return (

      <div className="container">

        <div className="row justify-content-center">

          <div className="col-md-8">

            <div className="card">

              <div className="card-header">Example Component</div>

              {this.state.json.map(i => (

                <div>{i.name}</div>

              ))}

              <div className="card-body">I'm an example component!</div>

            </div>

          </div>

        </div>

      </div>

    );

  }

}


查看完整回答
反對 回復 2022-08-04
  • 1 回答
  • 0 關注
  • 158 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號