InitialValues ​​работает нормально, но другие поля устанавливаются пустыми при обновлении одного поля - PullRequest
0 голосов
/ 01 июня 2019

У меня есть работающий компонент в форме избыточной формы, и я назначаю initialValues, чтобы позволить моему пользователю обновлять свои существующие данные. но я получаю, когда я обновляю одно поле, другое поле становится пустым.

Я использую "redux": "^ 4.0.1", "redux-form": "^ 8.2.0"

в CustomerScreen.js

<CustomerForm 
    onSubmit={values => this.onSubmitForm(values)}
    isLoading={this.state.formLoading}
    initialValues={customer}
/>

В CustomerForm.js

const CUSTOMER_FIELDS = [
    { name: 'name', label: 'Full Name' },
    { name: 'email', label: 'Email Address', keyboardType: 'email-address', isRequired: true },
    { name: 'phone', label: 'Phone Number', keyboardType: 'phone-pad' },
    { name: 'address', label: 'Address', keyboardType: 'default' }
]

let CustomerForm = ({ onSubmit, isLoading, handleSubmit, ...rest }) => {
    const styles = getStyleSheet('form', rest.isDarkTheme)

    return (
        <View style={styles.container}>
            <View style={styles.fieldsWrapper}>
                <FormRender fields={CUSTOMER_FIELDS} />
            </View>

            <View style={styles.buttonWrapper}>
                <Button
                    type="primary" 
                    activeStyle={styles.buttonActiveStyle} 
                    size="large"
                    loading={isLoading}
                    style={styles.button}
                    onPress={handleSubmit(values => onSubmit(values))}
                >
                    SAVE
                </Button>
            </View>
        </View>
    )
}

function validate(values) {
    const error = {}
    _.each(CUSTOMER_FIELDS, ({ name, label, isRequired }) => {
        if (isRequired) {
            if (values[name] === undefined || isEmpty(values[name])) {
                error[name] = `${label} is required fields!`
            }
        }
    })
    return error
}

function mapStateToProps({ isDarkTheme }) {
    return { isDarkTheme }
}

CustomerForm = reduxForm({
    validate,
    form: 'CustomerForm'
})(CustomerForm)

CustomerForm = connect(mapStateToProps)(CustomerForm)

export default CustomerForm

Я ожидаю, что выходные данные будут обновляться только в поле, над которым я работаю, а поле остальных по-прежнему имеет исходное значение.

...