以前用jq开发的时候, 表单都有一个hidden项用于存要编辑的数据的id, 用这个id的有无来判断是新建还是编辑
antd好像没有这个东西了啊, 那这个id存哪呢?
存state中? setState看网上说是异步的, 也就是不能立即生效, 当Modal弹出后, 立即点 save 按钮, 那么id有可能还没set进去, 也就误认为是新建而不是更新了
一般如何解决, 刚接触react, 套路还不明白
以前用jq开发的时候, 表单都有一个hidden项用于存要编辑的数据的id, 用这个id的有无来判断是新建还是编辑
antd好像没有这个东西了啊, 那这个id存哪呢?
存state中? setState看网上说是异步的, 也就是不能立即生效, 当Modal弹出后, 立即点 save 按钮, 那么id有可能还没set进去, 也就误认为是新建而不是更新了
一般如何解决, 刚接触react, 套路还不明白
看你是怎么实现的,可以根据路由来判断.比如/xxx/:id是你的路由,后面是id就是编辑,/xxx/add就是创建
看你说的意思是你用modal来填写数据?能不能把你的情景再说清楚点
现在几乎都用的json对象来保存数据吧,编辑页面的数据存在一个json中。这时候,id绑定到哪里是为所谓的呀。如果不需要显示就没必要绑定控件,只要你这个数据是编辑,那id肯定是有值的。如果是新建的,那id就是空的字符串。举个例子,完整的数据是userInfo = {id: '10001', name: 'LiLei', age: 21, sex: 'm'}。此时,如果你的表单设定只是修改姓名,那就只把name字段绑定到控件上就行了,保存的时候直接把state中的userInfo发给server就行了。
不用那么复杂,antd pro有个TableList的例子,里面是把fieldsValue覆盖原来的formValue,但是ID字段留下来了,不用那么复杂的用老办法把ID绑在INPUT上
const updateHandle = () => {
form.validateFields((err, fieldsValue) => {
if (err) return;
form.resetFields();
*const newFormVals = { ...formVals, ...fieldsValue };*
handleUpdate(newFormVals);
});
};
4 回答1.6k 阅读
2 回答977 阅读✓ 已解决
2 回答1k 阅读✓ 已解决
2 回答2.6k 阅读
1 回答919 阅读✓ 已解决
1 回答653 阅读✓ 已解决
2 回答806 阅读✓ 已解决
表单操作参考antd的form里面的一系列api,编辑的时候页面初始化数据,setFieldsValues,新建页面不做初始化。给一个隐藏的input放id,提交的时候一次性提交。
