реквизит не отображается в компоненте реагирования - PullRequest
0 голосов
/ 26 июня 2018

Я сталкиваюсь с глупой проблемой, когда значение по умолчанию не отображается в форме. В моем приложении, когда пользователь вошел в систему, форма будет автоматически заполнена некоторыми деталями, поскольку она будет извлекать данные из сохраненной пользовательской информации, передаваемой в мой компонент через реквизиты.

В этом случае мой уже выбранный «Пол», т.е. значение по умолчанию не отображается при визуализации компонента.

В то же время, когда я передаю то же значение, что и в жестко запрограммированном виде, оно прекрасно работает.

Я получаю 'defaultValue' в 'renderGenderDropDown' как 'Male' (так же, как я сохранял в myValue const).

Но myValue const работает, defaultValue - нет. И да, мой компонент используется во многих других компонентах и ​​прекрасно работает. Это в основном, делает '' из 'React'.

Что мне нужно, чтобы это исправить?

Код:

renderGender() {
    const { options, data } = this.props;
    const gender = get(data, 'gender');
    const defaultValue = gender ? capitalize(gender) : gender;
    const fieldName = 'gender';
    return this.renderGenderDropDown(fieldName, defaultValue, prefixOptions);
}

renderGenderDropDown(fieldName, defaultValue, options) {
    const { configuration, id, validations } = this.props;
    const myValue = 'Male';
    return  <AppDropDown
      label={getLabel(fieldName, configuration, validations, 'gender')}
      options={dropdownOptions}
      defaultValue={myValue}
      //defaultValue={defaultValue}
      key={fieldName}
      className={fieldName}
      disabled={false}
      id={id}
      onChange={this.onGenderChange(this[fieldName])}
    />
}

1 Ответ

0 голосов
/ 26 июня 2018

В Javascript нет нативного capitalize(). Это, вероятно, возвращает обратно undefined вместо строки. Попробуйте сделать это, чтобы использовать первую букву в строке.

gender.charAt(0).toUpperCase() + gender.substr(1)

...