Así que tengo una vista de Laravel llamada homepage.blade.php , contiene lo siguiente:
<body> <div id=root></div> <script src="./js/app.js"></script> </body> Dentro app.js :
import React from "react"; import ReactDOM from "react-dom"; import SignUp from "./components/SignUp"; if (document.getElementById("root")) { ReactDOM.render(<SignUp />, document.getElementById("root")); } y dentro SignUp.js :
import React from "react"; export default function SignUp() { return ( <span className="text-xs font-bold uppercase"> Welcome, {!! auth()-> user() -> name !!} </span> } El homepage.blade.php es llamado por una función en un controlador, como este:
//inside the function in the Controller.php: $user = User::create($attributes); auth()->login($user); return redirect('/homepage'); // homepage redirects to homepage.blade.php El problema : no puedo insertar la línea {!! auth()-> user() -> name !!} dentro del componente de React SignUp.js que se insertará en la vista homepage.blade.php .
Pregunta : ¿Hay alguna forma de insertar código Blade en un componente de React? y hay una mejor manera de hacer esto?
No puede usar blade en archivos js. la forma correcta es definir la variable en el archivo blade usando la etiqueta <script></script> como esta:
<script> const window.username = '{!! auth()-> user() -> name !!}'; <script src="./js/app.js"></script> </script>y luego use la variable definida en su archivo app.js
No puedes hacerlo así. Blade solo funciona en un script que está en PHP tipo MIME. Debe cargar su archivo JS con .php para que su secuencia de comandos se pueda procesar. Así es como puedes hacer eso: