繁体   English   中英

如何将自定义(redux-form's Field)输入道具绑定到记录?

[英]How to bind custom (redux-form's Field) input prop to record?

我正在通过 redux-form 的字段创建自定义输入。 我使用“名称”道具来匹配我想要绑定的记录属性,但是当我创建或编辑记录时,post 参数既不显示输入值也不显示属性名称。

我已经以多种方式尝试了关于自定义输入的 react-admin 教程,但没有结果。

环境

React-admin 版本:2.7.2 React 版本:16.8.3 浏览器:Chrome/Firefox

// tariff.js

import TextField from '@material-ui/core/TextField';
import { Field } from 'redux-form';

const renderTextField = ({ input, label, meta: { touched, error }, ...custom }) => {
    const { defvalue } = custom;

    return (
        <TextField
            label={label}
            error={!!(touched && error)}
            helperText={touched && error}
            {...input}
            {...custom}
            value={defvalue}
        />
    )
};

class Tariff extends React.Component {
    state = {
        tariffs: [],
        selectedTariff: {}
    }

    // other methods...

    render() {
        const { tariffs, selectedTariff } = this.state;

        return (
            <React.Fragment>
                <Autocomplete suggestions={tariffs}
                    label={'Elija una tarifa'}
                    onChange={this.onTariffSelected}
                    defaultValue={''} />
                <Field name="tariff" component={renderTextField} label="Tarifa" defvalue={selectedTariff.amount || 0} />
            </React.Fragment>
        )
    }
}

// Customer.js

export const CustomerCreate = (props) => (
    <Create title="Crear Alumno" {...props}>
        <SimpleForm defaultValue={{status: true, identification_type: 'DNI'}}>
            <TextInput label="Nombre" source="name" validate={required()} 
            <Tariff/>
        </SimpleForm>
    </Create>

自定义输入道具“名称”(通过 redux-form 字段)在保存或编辑时添加到记录中。

<Field name="tariff" defvalue={0}}/>

我希望在 POST/PUT 记录上有“关税”:0 在他的身上。

解决方案:

只需将具有 redux 的 Field 的组件连接到 redux 存储:

export default connect(null, null)(Tariff);

您应该以 redux 形式使用 initialValues。 看到这里

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM