Javascript 如何在react admin中访问自定义组件中的表单数据?
我需要根据表单的状态字段更改工具栏按钮的行为。 我不知道如何访问当前表单数据以读取状态值 我尝试在周围的组件中使用Javascript 如何在react admin中访问自定义组件中的表单数据?,javascript,reactjs,react-admin,react-final-form,Javascript,Reactjs,React Admin,React Final Form,我需要根据表单的状态字段更改工具栏按钮的行为。 我不知道如何访问当前表单数据以读取状态值 我尝试在周围的组件中使用FormDataConsumer(Toolbar,在我的例子中)并将formData作为道具传递,但这产生了一个副作用,即按钮内部的handleSubmitWithRedirect 我想直接在按钮组件内部读取表单数据。我该怎么做 当前代码: // ---------------------------------------------------------------------
FormDataConsumer
(Toolbar
,在我的例子中)并将formData作为道具传递,但这产生了一个副作用,即按钮内部的handleSubmitWithRedirect
我想直接在按钮组件内部读取表单数据。我该怎么做
当前代码:
// ------------------------------------------------------------------------------------------
const StatusButton= ({ handleSubmitWithRedirect, ...props }) => {
const form = useForm();
const handleClick = useCallback(() => {
switch (props.formdata.status.id) {
case 0:
form.change('status', status[1]);
break;
case 1:
form.change('status', status[2]);
break;
default:
}
handleSubmitWithRedirect('list');
}, [form]);
return <SaveButton {...props} handleSubmitWithRedirect={handleClick} />;
};
// ------------------------------------------------------------------------------------------
export const MyToolbar= props => (
<Toolbar {...props} >
<SaveButton
label="Speichern"
redirect="list"
submitOnEnter={true}
variant="text"
/>
<FormDataConsumer>
{({ formData, ...rest }) =>
<StatusButton
label="Statuswechsel"
redirect="list"
submitOnEnter={false}
variant="text"
formdata={formData}
/>
}
</FormDataConsumer>
</Toolbar>
);
//------------------------------------------------------------------------------------------
const StatusButton=({handleSubmitWithRedirect,…props})=>{
const form=useForm();
const handleClick=useCallback(()=>{
开关(props.formdata.status.id){
案例0:
形式变更(“状态”,状态[1]);
打破
案例1:
形式变更(“状态”,状态[2]);
打破
违约:
}
handleSubmitWithRedirect(“列表”);
},[表格];
返回;
};
// ------------------------------------------------------------------------------------------
导出常量MyToolbar=props=>(
{({formData,…rest})=>
}
);
更新:
您可以在codesandbox中看到一个示例:
可以通过以下方式读取当前表单的字段值:
import { useForm } from 'react-final-form';
const form = useForm();
var formdata = form.getState().values;
formdata
包含作为对象的整个表单值。不确定意图<代码>使用表单并执行相同的操作,带来上下文。。。对于useForm
,您可以从文档中获取form
-允许API访问。。。然后看起来应该是form.getStatus()。value
?“status”是一个自定义表单字段,在我的例子中,它包含一个id名称元组对象。我在文档说明中找不到如何使用“表单”访问表单数据的任何提示。form.getStatus().values.status
。。。。获取form.getStatus()
到某个变量中,并使用调试器/dev工具进行检查。。。。准备的目的是检查当前工作流步骤(在我的例子中称为status),而不是表单的技术状态没有表单。getStatus()