我正在使用 mobx-react-form,我需要使用从商店中的对象中提取的默认值填写表单。不幸的是,如果我尝试使用 FormModel.$("email").set(object.email); 在我的组件 mobx 中抱怨我无法在动作之外修改观察到的对象并且我超过了 maxdepth。
具体来说,我的代码看起来像这样(为清楚起见,删除了一些细节)
import React from 'react';
import ReactDOM from "react-dom"
import { observer } from "mobx-react-lite"
import validatorjs from 'validatorjs';
import MobxReactForm from 'mobx-react-form';
const fields = [{
name: 'email',
label: 'Email',
placeholder: 'Email',
rules: 'required|email|string|between:5,25',
// value: user.email,
}, …
]
const FormModel = new MobxReactForm({ fields }, { plugins, hooks }); //nothing exception here standard plugins/hooks
const UserForm = observer(({open, onClose, object}) => { //My component…object has fields with names email…
FormModel.$("email").set(object.email); //This works fine if I replace object.email with "foo"
return (<MobxInput field={FormModel.$("email")} fullWidth />);
});
export default UserForm;
是的,我已经检查过该对象是否具有适当的字段(它只是从父级传入的一个裸对象……在这种情况下甚至不是可观察的对象)。
我的第一种方法是简单地将所有内容放在 UserForm 中,然后简单地从对象中填充字段中的值,但是当我这样做时,输入在结果表单中不起作用(我怀疑 mobx 正在尝试观察在该观察者内部创建的对象,并且不起作用)。
问题是我有时需要使用相同的表单来使用用户存储中的用户对象提供的数据,有时需要使用空白值来创建新用户,而我现在对如何执行此操作有点困惑。