Как использовать React js в шаблоне лезвия

Я хотел бы использовать React js в качестве интерфейса для моего проекта laravel. Итак, я сделал предустановку:

php artisan preset react

Теперь я хотел бы знать, как компонент реакции должен быть реализован в моих представлениях лезвий, чтобы они могли получать доступ к данным, передаваемым в эти представления через контроллеры ...

Например, в моем homeController я передаю некоторые данные:

return views('theview')->with('datas',$datas);

В theview.blade.php я могу получить к ним доступ следующим образом:

{{ $datas }}

но как я могу использовать это для обновления компонента реакции?

передача этих данных как свойства компонента реакции.

Ikram - Ud - Daula 15.04.2018 17:56

как @extends('layouts.app') @section('content') <example-component datas = {{ $datas }}></example-component> @endsection

Ikram - Ud - Daula 15.04.2018 17:58
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Laravel Scout - это популярный пакет, который предоставляет простой и удобный способ добавить полнотекстовый поиск в ваше приложение Laravel. Он...
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
6
2
12 705
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Один из способов - передать данные из контроллера laravel в реагирующий компонент.
A React Component взаимодействует с элементом идентификатора представления 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 View

   ..
   <link rel = "stylesheet" href = "css/app.css">
</head>
<body>
    <div id = "example" data='{{ $data }}'></div>

    <script src = "js/app.js"></script>
</body>

Ваш Пример компонента в reources / 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.info('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 в командной строке.

но почему данные должны передаваться как json, подскажите пожалуйста?

Barbell 16.04.2018 14:30

Потому что атрибут HTML-тега содержит только строку в качестве значения. <div id = "example" data='{{$data}}'></div>

Ikram - Ud - Daula 16.04.2018 14:45

Хорошее объяснение

smartworld-dm 15.11.2018 03:39

Было бы лучше обратиться к видео YouTube для этого конкретного примера. youtube.com/watch?v=Un3DbIvqPoA

shireef khatab 16.07.2020 14:54

Вы хотите передать некоторую серверную строку / массив / коллекцию / что угодно в свой JavaScript

В приведенной выше ситуации вы можете использовать пакет PHP-Vars-To-Js-Transformer этот пакет поддерживается известным сайтом laracasts, поэтому вам не нужно сильно беспокоиться об ошибках и побочных эффектах.

Вот простой пример после успешной установки и загрузки пакета.

use JavaScript; // declare name space.

// Class method 
public function index()
{
    JavaScript::put([ 
        'foo' => 'bar',
        'user' => User::first(),
        'age' => 29
    ]);

    return View::make('hello');
}

Используя приведенный выше код, вы теперь сможете получить доступ к foo, user и age из вашего JavaScript.

console.info(foo); // bar
console.info(user); // User Obj
console.info(age); // 29

Для получения дополнительной информации посетите: PHP-Vars-To-Js-Transformer

Другие вопросы по теме