gpt4 book ai didi

react-admin - React Admin - 在表单中获取当前值

转载 作者:行者123 更新时间:2023-12-03 14:50:16 31 4
gpt4 key购买 nike

我在编辑表单中获取记录的“更新”值时遇到了很大的麻烦。我总是得到初始记录值,即使我有一个链接到正确记录源的输入,它应该更新它。

有没有其他方法来获取 SimpleForm 的值?

我有一个简单的编辑表单:

<Edit {...props}>
<SimpleForm>
<MyEditForm {...props} />
</SimpleForm>
</Edit>

MyEditForm 如下:
class MyEditForm extends React.Component {
componentDidUpdate(prevProps, prevState, snapshot) {
console.log(prevProps.record.surface, this.props.record.surface); // <-- here is my problem, both values always get the initial value I had when I fetched the resource from API
}

render() {
return (
<div>
<TextInput source="surface" />
<!-- other fields -->
</div>
);
}
}

我通常这样做是为了从其他组件获取我更新的组件数据,但是在 react-admin 表单的情况下,我无法让它工作。

谢谢,

尼古拉斯

最佳答案

这真的取决于你想用这些值做什么。如果你想根据另一个输入的值隐藏/显示/修改输入, FormDataConsumer 是首选方法:

例如:

import { FormDataConsumer } from 'react-admin';

const OrderEdit = (props) => (
<Edit {...props}>
<SimpleForm>
<SelectInput source="country" choices={countries} />
<FormDataConsumer>
{({ formData, ...rest }) =>
<SelectInput
source="city"
choices={getCitiesFor(formData.country)}
{...rest}
/>
}
</FormDataConsumer>
</SimpleForm>
</Edit>
);

您可以在 Input 中找到更多示例。文档。看看 Linking Two InputsHiding Inputs Based On Other Inputs .

但是,如果您想在 MyEditForm 的方法中使用表单值组件,你应该使用 reduxForm selectors .这更安全,因为即使我们更改了存储中 reduxForm 状态的键,它也能工作。
import { connect } from 'react-redux';
import { getFormValues } from 'redux-form';

const mapStateToProps = state => ({
recordLiveValues: getFormValues('record-form')(state)
});

export default connect(mapStateToProps)(MyForm);

关于react-admin - React Admin - 在表单中获取当前值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51595027/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com