为什么数组元素在映射时被视为代理引发错误?

Why array element is treated as proxy as raise error when mapping it?

在 Laravel 8 / livewire 2.5 / alpinejs 3 应用程序中,我为数据列表制作了上下文菜单 为了在服务器端仅显示 1 个上下文菜单,我在服务器端数组上进行了排序:

foreach( $this->newsDataRows as $nextNewsDataRow ) {
    $this->selectedNews[$nextNewsDataRow->id] = false;
}

在 blade 文件中:

selectedNews: @json($selectedNews),

上下文菜单的条件:

 <div class="show_context_menu_container" x-show="selectedNews[{{$news->id}}]"

 

Problem is that when context menu is selected and operation completed I trigger event to set all elements of selectedNews 变为 false :

window.addEventListener('hideAllSelectedNewsItems', event => {
    console.log('hideAllSelectedNewsItems::')
    console.log( this.selectedNews )

    this.selectedNews.map((nextSelectedNews, index) => {
        console.log('nextSelectedNews::')
        console.log(nextSelectedNews)
        this.selectedNews[index]= false
    })

})

  

但是我得到了错误:https://prnt.sc/YKDvN_MfbYBN 我想知道为什么 this.selectedNews 被视为代理以及可以通过哪种方式修复它?

谢谢!

我找到了一个入口方法的决定,将代理对象转换为数组

selectedNews = Object.entries(this.selectedNews)
this.selectedNews = []
var self = this
selectedNews.map((nextSelectedNews, index) => {
   console.log('nextSelectedNews::')
   console.log(nextSelectedNews)
   ...
})

不确定这是不是最好的决定,但它对我有用。