这是从Laravel控制器传递数据到React组件的一种方法。
一个React组件与视图ID元素document.getElementById('example')
在您的Laravel视图页面上交互。
您的Laravel控制器可能如下所示。
class HomeController extends Controller
{
public function index(){
$data = [
'john', 'doe'
];
return view('welcome')->with('data', json_encode($data));
}
}
确保将数据控制器以JSON格式传递给视图。您的Blade视图
..
<link rel="stylesheet" href="css/app.css">
</head>
<body>
<div id="example" data='{{ $data }}'></div>
<script src="js/app.js"></script>
</body>
像这样,在resources/assets/js/components/Example.js中的示例组件
import React, { Component } from 'react';
import ReactDOM from 'react-dom';
export default class Example extends Component {
constructor(props){
super(props);
console.log('data from component', JSON.parse(this.props.data));
}
render() {
return (
<div className="container">
.....
</div>
);
}
}
if (document.getElementById('example')) {
var data = document.getElementById('example').getAttribute('data');
ReactDOM.render(<Example data={data} />, document.getElementById('example'));
}
如果你修改了Example.js组件的代码,那么请确保在命令提示符中运行npm run dev
命令。