Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel Livewire在渲染视图后是否可以更改变量?_Php_Laravel_Laravel Livewire - Fatal编程技术网

Php Laravel Livewire在渲染视图后是否可以更改变量?

Php Laravel Livewire在渲染视图后是否可以更改变量?,php,laravel,laravel-livewire,Php,Laravel,Laravel Livewire,我想加载视图,然后更新变量数据,以停止页面加载时间过长(需要加载大量数据)。使用Laravel livewire是否可以实现这一点? 我试图让livewire呈现视图,然后在页面加载后更新公共变量。在我的例子中,我将从api获取数据,因此我希望用户看到页面,然后我可以在获取数据时添加一些加载微调器 但是,从我的测试和查看my test变量来看,不会更新 Livewire控制器示例 class Example extends Component { public $test; p

我想加载视图,然后更新变量数据,以停止页面加载时间过长(需要加载大量数据)。使用Laravel livewire是否可以实现这一点?

我试图让livewire呈现视图,然后在页面加载后更新公共变量。在我的例子中,我将从api获取数据,因此我希望用户看到页面,然后我可以在获取数据时添加一些加载微调器

但是,从我的测试和查看my test变量来看,不会更新

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>

你好,世界

{{$test}}

lifecycle钩子说Deterhyate在render()之后运行,这意味着$test应该='TEST3' 但它保持为“嗨”,我的初始状态

似乎还有javascript钩子,比如组件初始化时。但我不知道如何从那里调用livewire函数或变量


有人知道如何在视图呈现后更新livewire变量吗?

您可以在页面第一次呈现后初始化数据,尽管使用
wire:init
指令

你的刀片看起来像


你好,世界

{{$test}}

您的组件将有一个方法
loadData()
,您可以在其中调用API

类示例扩展组件
{
公费考试;
公共功能挂载()
{
$this->test='hi';
}
公共函数loadData()
{
$this->test='dataloaded';
}
公共职能
{
返回视图('livewire.example');
}
}

有关更多示例,请参阅上的官方文档。

似乎我错过了livewire文档中的延迟加载!哎呀