2017-12-04 2 views
2

私の目標は、ブレードビューでこれを行うことです。Laravel 5.5レンダリングコントローラからのデータを含むブレードビューのリアクションコンポーネント

<Example name="{{ $user->name }}" /> 

しかし、これは何もレンダリングしません。

私がしたとき:<div id="example"></div>それは正常な小道具の値なしでコンポーネントをレンダリングします。

私は自分のコントローラーから来たデータをReactコンポーネントに渡したいと思っています。

私もそれが可能かどうかはわかりません。

これは私のApp.jsです:

require('./components/Example'); 

これは私のExample.jsコンポーネントです:

import React, { Component } from 'react'; 
import ReactDOM from 'react-dom'; 

class Example extends Component { 
    render() { 
     return (
      <div className="container"> 
       <div className="row"> 
        <div className="col-md-8 col-md-offset-2"> 
         <div className="panel panel-default"> 
          <div className="panel-heading">Example</div> 

          <div className="panel-body"> 
           Hello, {this.props.name} 
          </div> 
         </div> 
        </div> 
       </div> 
      </div> 
     ); 
    } 
} 

if (document.getElementById('example')) { 
    ReactDOM.render(<Example />, document.getElementById('example')); 
} 

答えて

0

あなたはこのようにそれを行うことができます。..

@extends('layouts.app') 

@section('script') 
    <script type="text/javascript"> 
     ReactDOM.render(<Example name="{{ $user->name }}"/>, document.getElementById('example')); 
    </script> 
@endsection 

@section('content') 
    <div id="example"></div> 
@endsection 

しかし、より良いを解決策は、jsonデータを返すコントローラへのAJAX要求です。あなたのための

最善の解決策は、このlaravelパッケージ laracasts/PHP-Vars-To-Js-Transformer

+0

どのように私は、ブレードビューで、そのJSONデータを使用するか、コンポーネントを反応させることができますか? – user3652775

+0

JSにPHP変数を渡す方法は2つあります。 XML、JSONのようないくつかの形式でデータを返し、可変JSにそれらを解析JSから 1荷重コントローラのURL 2. PHPから必要なデータを有するブレードビューにインラインジャバスクリプト '<スクリプトタイプ= "text/javascript"> var awesomeString = "{{$ myString}}"; var prettyObject = JSON.parse( "{{json_encode($ likedObject)}}"); ' – DamianImrich

+0

データをjs変数に解析するにはどうすればいいですか?そのデータをReactコンポーネントでどのように使うことができますか? – user3652775

0

私は、この例のようにそれを行います。 index.blade.php

<div id="main" data-user_name="{{$user->name}}" /> 

で次にMain.js

const Main = (props) => { 
    return (
    <div> 
     <Component {...props} /> 
    </div> 
); 
} 

if(document.getElementById('main')) { 
    const el = document.getElementById('main') 
    const props = Object.assign({}, el.dataset) 
    ReactDOM.render(<Main {...props} />, el); 
} 
関連する問題