2017-08-28 2 views
1

Ich benutze und React und Laravel.ReactJS - Parameter von Blade an JSX übergeben

Ich kann Werte von meinem Controller an die Blade-Ansicht übergeben. Aber wie kann ich diesen Wert von der Ansicht an die JSX übergeben.

Meine Ansicht sieht wie folgt aus:

<?php 
    echo $max_price; 
?> 

@extends('layouts.master') 


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

I MAX_PRICE hier zugreifen. Aber wie kann ich es an die JSX-Datei übergeben.

Die JSX-Datei, die die pageComponent

var React = require('react'); 
var ReactDOM = require('react-dom'); 
var PageComponent = require('./PageComponent'); 

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

Antwort

1

Sie window Objektdaten von Klinge zu teilen js macht verwenden können:

<script type="text/javascript"> 
    window.maxPrice= {!! json_encode($max_price) !!}; 
</script> 

und dann können Sie window.maxPrice in Ihrem jsx Dateien verwenden:

ReactDOM.render(<PageComponent maxPrice={window.maxPrice} />, 
    document.getElementById('stocks')); 

Allerdings würde ich nicht re empfehle, auf die Fenstervariable von jsx direkt zuzugreifen. Stattdessen könnte Wrap-Sie window in eine Hilfsmethode Zugriff:

export function getMaxPrice() { 
    return window.maxPrice; 
} 

und dann in jsx:

ReactDOM.render(<PageComponent maxPrice={getMaxPrice()} />, 
    document.getElementById('stocks')); 
+0

Dank dieser Arbeit ist. Gibt es eine bessere oder bevorzugtere Methode, anstatt die Variablen im Fenster zu übergeben? In einem früheren Projekt hatte ich so etwas verwendet: im Controller put, return view ('stocks') -> mit ('MAX_PRICE', "900"); Und in der js-Komponente konnte ich direkt MAX_PRICE verwenden. Aber es funktioniert hier nicht. – fractal5

+0

können Sie LocalStorage ich Ding eher als Fensterobjekt verwenden. Das Speichern nicht kritischer Werte im localStorage und das Lesen von diesem kann auch in beide Richtungen funktionieren. – bennygenel

Verwandte Themen