首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在inertiajs和vue中更新属性

如何在inertiajs和vue中更新属性
EN

Stack Overflow用户
提问于 2021-08-31 07:26:29
回答 1查看 172关注 0票数 0

我正在尝试使用InertiaJS更新vue中的属性list

代码语言:javascript
复制
props: {
    list    : {type: Object, default: {}}
},
代码语言:javascript
复制
updateTable(filters) {
    axios.post(route('updateList'), filters)
        .then(r => {
            this.list = r.data
        })
}

但是我得到了以下错误:TypeError: 'set' on proxy: trap returned falsish for property

在InertiaJS中,所有的属性都是作为代理提供的。正如this mdn article中所描述的,代理的set方法需要返回true才能允许赋值。但是,我不知道如何正确地实现这一点,因为我不会自己创建代理。有什么建议吗?

还是因为惯性,我总是被迫使用partial reload

EN

回答 1

Stack Overflow用户

发布于 2021-08-31 13:32:28

我相信这里对Vue本身和惯性是如何工作的存在一些误解。

你收到了list作为道具。道具不应直接更改。

如果您确实需要更改它,您可以通过this.$page.props.list直接引用它,而不是将列表作为道具接收。

或者,您可以这样做:

代码语言:javascript
复制
export default {
   props: {
      list: {
         type: Object,
         default: {}
      }
   },
   data () {
      return {
         listCopy: this.list
      }
   },
   mounted () {
      // Handle your scroll events
      axios.get(this.listCopy.next_page_url).then(response => {
         this.listCopy = {
            ...response.data,
            data: [...this.listCopy.data, ...response.data.data]
         }
      })
   }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68994504

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档