Php Livewire在尝试对…;成分

Php Livewire在尝试对…;成分,php,laravel,laravel-livewire,Php,Laravel,Laravel Livewire,我遇到以下错误,对此我有点不知所措: Livewire在尝试对… 组成部分。确保Livewire组件的[name,id,data] 请求之间没有被篡改 情况如下:LiveWire2.x、Laravel7.x、ComponentController从3个MySQL存储过程中获取数据并进行处理。组件刀片是带有foreach循环的非常基本的刀片。我使用wire:init特性,这样组件就不会阻塞页面加载。它包含一个自定义的分页。切换到第二页数据时,会发生此错误。它在LiveWire1.x上时没有出错 有

我遇到以下错误,对此我有点不知所措:

Livewire在尝试对… 组成部分。确保Livewire组件的[name,id,data] 请求之间没有被篡改

情况如下:LiveWire2.x、Laravel7.x、ComponentController从3个MySQL存储过程中获取数据并进行处理。组件刀片是带有foreach循环的非常基本的刀片。我使用wire:init特性,这样组件就不会阻塞页面加载。它包含一个自定义的分页。切换到第二页数据时,会发生此错误。它在LiveWire1.x上时没有出错

有人知道如何解决这个问题吗?这个错误本身对我没有多大意义。需要其他信息吗


提前感谢您,感谢您的帮助

在我的案例中,解决方案是保护公共财产并手动将其传递给刀片服务器,因此它被排除在Livewire的引擎盖下自动处理之外。

因此我得到了相同的错误,这一个:

Livewire encountered corrupt data when trying to hydrate the [component] component. Ensure that the [name, id, data] of the Livewire component wasn't tampered with between requests.
在尝试了公认的答案并阅读了Livewire的Github之后,我开始尝试以不同的方式向视图传递数据。我在这里分享它是为了帮助其他人解决同样的用例问题

我发现了下面的变化,我之前通过的一个url,我只是在视图中看到了它,使它消失了。发件人:

//类
类MyComponent扩展组件
{
公营店铺$Shop;
公共广播$Address;
公开行动;
//规则等
公共功能支架(车间$Shop)
{
如果($shop->address()->exists()){
$this->address=$shop->address;
$this->form_action=route('merchant.shop.address.update');
}否则{
$this->address=地址::make();
$this->form_action=route('address.store');
}
}
//看法
@csrf
致:

//类
类MyComponent扩展组件
{
公营店铺$Shop;
公共广播$Address;
//规则等
公共功能支架(车间$Shop)
{
$this->address=$shop->address()->exists()?$shop->address:address::make();
}
//看法

在我的例子中,我有几个公共变量,并不是所有的都是从父视图传入的。在阅读了Markus的答案后,我去把
mount
方法添加到我的livewire类中,并传入了我从父视图继承的变量,并且成功了。我使用的是livewire 2.3

这是一个错误

class MyView extends Component
{
  public $fromParent, $local;

  public function render()
  {
    return view('livewire.my-view');
  }
}
添加挂载修复了它

class MyView extends Component
{
  public $fromParent, $localVariable1, localVariable2;

  public function mount($fromParent)
  {
    $this->fromParent = $fromParent;
  }

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

我通过将livewire脚本@livewireScripts放在页面标题中解决了这个问题

<head>

<meta charset="utf-8" />

@livewireStyles

@livewireScripts

</head>

@livewireStyles
@LiveWireScript

Best answer!Livewire在用不同的值对同一属性进行重新水化时仍然存在问题。例如,如果您有一个集合,然后您将更改为一个GROUP集合。谢谢Markus。这个答案救了我的命:)谢谢。@EricLagarda您应该添加此注释作为答案。它解决了我的问题,是一个完全有效的答案哦,我!