Amis表单提交后数据未更新,如何触发重新渲染?

公孙珮青 阅读 52

在用Amis做数据编辑页面时遇到问题,表单提交成功后数据没变化。尝试用setData更新状态了,但界面还是显示旧数据。

场景是这样的:用户编辑信息后点击提交,后端返回新数据后,我用React的setState更新了formData变量,但表单里的输入框还是老内容。控制台没报错,数据确实到组件里了。

表单配置是这样的:


{
  "type": "form",
  "api": "/api/save",
  "body": [
    { "type": "input-text", "name": "name", "label": "姓名" }
  ]
}

提交处理函数这样写的:


const handleSave = (data) => {
  fetch('/api/save', { method: 'POST', body: data })
    .then(res => res.json())
    .then(newData => setFormData(newData)); // 更新了状态但没渲染
};

折腾了好久没找到原因,Amis表单是不是需要特殊方式强制刷新?

我来解答 赞 8 收藏
二维码
手机扫码查看
1 条解答
Des.海霞
Amis 表单提交后不会自动重新渲染,因为它的数据源是独立的。你可以试试在更新状态后,手动调用 form.updateData 方法刷新表单数据。

修改你的提交函数:
const handleSave = (data) => {
fetch('/api/save', { method: 'POST', body: JSON.stringify(data) })
.then(res => res.json())
.then(newData => {
setFormData(newData);
form.updateData(newData); // 强制刷新表单
});
};

应该能用,不行再看看别的依赖有没有问题。
点赞 11
2026-01-30 23:13