【发布时间】:2021-10-13 00:45:33
【问题描述】:
在我的 InertiaJS/VueJS 项目中,我有一个从后端接收一些数据的道具:
event: {
type: Object,
default: () => { return {} }
},
这就是事件 obj 在后端的样子:
['name' => 'Event Name']
我使用toRefs 来转换响应式道具并在 UI 中更新其属性:
const eventRef = toRefs(props).event
因此,当组件加载时,事件的名称为“事件名称”,当我将 UI 中的事件名称更新为“新名称”并提交表单时,我在请求中发送 eventRef obj 以创建新活动:
Inertia.post(url, eventRef, only: ['global'])
如果后端出现验证错误,我会将其返回到前端并在 UI 中显示错误(这可以正常工作)。我遇到的问题是 Inertia(或者可能是 VueJS)在创建组件时将对象 eventRef 返回到他以前的状态。这意味着 eventRef 的 name 属性再次更改为“事件名称”,而不是保留在 UI 中更新的“新名称”。我想在提交表单后保留对象的状态。这是我的惯性响应:
component: "Events/EventNew"
props: {
global: {} // Global object
}
url: "/app/qa/events/new"
version: null
如您所见,我什至没有从后端获取“事件”道具,因此不应对其进行更新。在阅读了 Inertia 文档后,我认为请求选项中的简单 preserveState:true 可以完成这项工作,但这并没有发生。每次服务器返回 Inertia 响应时,eventRef obj 都会“重置”。
我在这里缺少什么?我会很感激一些帮助
【问题讨论】:
标签: javascript php vue.js symfony inertiajs