Laravel Livewire Можно ли изменить переменную после рендеринга представления?

Я хочу загрузить представление, а затем обновить данные переменных, чтобы страница не требовала времени для загрузки (много данных для загрузки). Возможно ли это с Laravel livewire?

Я пытаюсь заставить livewire отобразить представление, а затем обновить общедоступные переменные после загрузки страницы. В моем случае я буду получать данные из api, поэтому я хочу, чтобы пользователь видел страницу, а затем я могу добавить некоторые загрузочные счетчики во время выборки данных.

Однако из моего теста и просмотра жизненный цикл livewire моя тестовая переменная не обновляется.

Пример контроллера Livewire

class Example extends Component
{
    public $test;

    public function mount()
    {
        $this->test = 'hi';
    }

    public function render()
    {
        return view('livewire.example');
    }

    public function hydrate()
    {
        $this->test = 'TEST1';
    }

    public function hydrateTest()
    {
        $this->test = 'TEST2';
    }

    public function dehydrate()
    {
        $this->test = 'TEST3';
    }
}

Пример лезвия Livewire

<div>
    <p>Hello World</p>
    <p>{{ $test }}</p>
</div>

В хуках жизненного цикла говорилось, что обезвоживание запускается после render (), что означает, что $ test should = 'TEST3 но он остается как "привет", мое исходное состояние.

Похоже, есть и хуки javascript, например, когда компонент был инициализирован. Но я не уверен, как оттуда вызывать функции или переменные livewire.

Кто-нибудь знает, как обновить переменные livewire после рендеринга представления?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
32
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Вы можете инициализировать данные после того, как страница будет отрисована в первый раз, с помощью директивы wire:init.

Ваш клинок будет выглядеть примерно так

<div wire:init = "loadData">
    <p>Hello World</p>
    <p>{{ $test }}</p>
</div>

И у вашего компонента будет метод loadData(), с помощью которого вы будете обращаться к API.

class Example extends Component
{
    public $test;

    public function mount()
    {
        $this->test = 'hi';
    }

    public function loadData()
    {
        $this->test = 'Data loaded';
    }

    public function render()
    {
        return view('livewire.example');
    }
}

См. Дополнительную информацию в официальной документации по отложенная загрузка.

Похоже, я пропустил отложенную загрузку в документации livewire! Упс

NeedHelp101 31.03.2021 02:46

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