Reduxフォーム-ページの読み込み時にinitialValuesが設定されていません

プミシャー

redux-formを使用して最初のフォームフィールド値を設定する際に問題が発生しました。

これが私が試したコードです

import { Field, FieldArray, reduxForm, getFormValues, change } from 'redux-form'

const renderField = ({
  input,
  label,
  type,
  meta: { asyncValidating, touched, error }
}) => (
  <div>
    <label>{label}</label>
    <div className={asyncValidating ? 'async-validating' : ''}>
      <input {...input} type={type} placeholder={label}/>
      {touched && error && <span>{error}</span>}
    </div>
  </div>
)
class Profile extends Component {

  constructor(props) {
    super(props);
    this.state = {
      firstName: null,
      lastName: null,
    }
  }
  
  componentDidMount() {
    this.props.fetchProfile();    
  }

  async handleChange(e) {
    await this.setState({ 'initialValues': { [e.target.name] : e.target.value }});
    await this.setState({ [e.target.name] : e.target.value });
  }

onSubmit = (e) => {
    this.props.saveProfile({
      firstName: this.state.auth.firstName,
      lastName: this.state.auth.lastName,
    });
  }

  componentWillReceiveProps(nextProps) {
    this.setState({ 
      firstName : nextProps.initialValues.firstName,
      lastName : nextProps.initialValues.LastName,
     });

    this.setState({ 'initialValues': {
      firstName : nextProps.initialValues.firstName,
      lastName : nextProps.initialValues.LastName,
     }});
  }
render() {
    return (
      <>
        <form onSubmit={handleSubmit(this.onSubmit)}>
          <div>
          <Field
              name="firstName"
              type="text"
              component={renderField}
              label="firstName"
              onChange={this.handleChange.bind(this)}
            />
          </div>
          <div>
          <Field
              name="lastName"
              type="text"
              component={renderField}
              label="lastName"
              onChange={this.handleChange.bind(this)}
            />
          </div>
          <div>
            <button type="submit" disabled={pristine || submitting}>
              Update Info
            </button>
          </div>
    </form>
);
  }
}

Profile = reduxForm({
  form: 'Profile' ,
 // fields,
  validate,
  asyncValidate,
  enableReinitialize: true,
})(Profile);

function mapStateToProps(state, props){
  let firstName = '';
  let lastName = '';
  return {
    userData: state.auth.userData,
    initialValues:{
      firstName: state.auth.firstName,
      lastName: state.auth.lastName,
    }
  }
}

const mapDispatchToProps = (dispatch) => {
  return {
    fetchProfile: () => dispatch(auth.actions.fetchProfile()),
  }
} 

export default connect(mapStateToProps, mapDispatchToProps)(Profile);

ただし、ロード時にフィールドに値を設定していません。フィールドは空です

プラタープ・レディ

Redux Form動作は少し違うと思います。

onChangeフォームfieldsデータを保持するために、明示的なハンドラーを設定したり、状態を宣言したりする必要はありませんRedux Form以下のようにコードを更新します

import { Field, FieldArray, reduxForm, getFormValues, change } from 'redux-form'

const renderField = ({
  input,
  label,
  type,
  meta: { asyncValidating, touched, error }
}) => (
  <div>
    <label>{label}</label>
    <div className={asyncValidating ? 'async-validating' : ''}>
      <input {...input} type={type} placeholder={label}/>
      {touched && error && <span>{error}</span>}
    </div>
  </div>
)
class Profile extends Component {
  // No need constructor/to explicitly declare the state
  componentDidMount() {
    this.props.fetchProfile();    
  }

render() {
    const { handleSubmit, pristine, submitting} = props; // You can have custom handleSubmit too
    return (
      <>
        <form onSubmit={handleSubmit}>
          <div>
          <Field
              name="firstName"
              type="text"
              component={renderField}
              label="firstName"
            />
          </div>
          <div>
          <Field
              name="lastName"
              type="text"
              component={renderField}
              label="lastName"
            />
          </div>
          <div>
            <button type="submit" disabled={pristine || submitting}>
              Update Info
            </button>
          </div>
    </form>
);
  }
}

Profile = reduxForm({
  form: 'Profile' ,
 // fields,
  validate,
  asyncValidate,
  enableReinitialize: true,
})(Profile);

function mapStateToProps(state, props) {
  return {
    userData: state.auth.userData,
    initialValues:{ // These are the initial values. You can give any name here for testing to verify the ReduxForm working
      firstName: state.auth.firstName,
      lastName: state.auth.lastName,
    }
  }
}

const mapDispatchToProps = (dispatch) => {
  return {
    fetchProfile: () => dispatch(auth.actions.fetchProfile()),
  }
} 

export default connect(mapStateToProps, mapDispatchToProps)(Profile);

問題の例とは、answer物事をよりよく理解するのに間違いなく役立ちます。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

DateBox jQueryMobile-ページの読み込み後に設定された最小属性。終了日は開始日より前には許可されていません

分類Dev

最初のページの読み込み時に、ページサイズがngグリッドで選択されていません

分類Dev

Reactコンポーネントの読み込み時にgapiが定義されていません

分類Dev

ページの読み込み時にすべての子がチェックされている場合、親はチェックされません

分類Dev

GoogleMapsはページの読み込み時に初期化されません

分類Dev

反応:ボタンonClick関数はページの読み込み時に実行されていますが、クリックしていません

分類Dev

select_tagのクラスがページの読み込み時に読み込まれません

分類Dev

Tkinterページが読み込まれていません

分類Dev

Wordpressテーマ設定ページが読み込まれません

分類Dev

ページ読み込み時にフォーム値を設定する

分類Dev

読み込み時にサイトで画像が正しくフォーマットされていません

分類Dev

Reduxフォーム:initialValuesはフォーム値を設定しません

分類Dev

javascriptが呼び出されましたが、ページに読み込まれていません

分類Dev

一部のWordPressページが読み込まれていません。内容が表示されない

分類Dev

ページの読み込み時にフォームにデフォルト値を設定するにはどうすればよいですか?(Rails)

分類Dev

Rails:ネストされたリモートフォームはページの読み込み時に機能しません

分類Dev

画像がウェブページに読み込まれていません

分類Dev

.htaccess:画像がウェブページに読み込まれていません

分類Dev

背景画像が外部ページに読み込まれていません

分類Dev

Wordpressの管理ページが読み込まれていません

分類Dev

フォーム送信時にページが再読み込みされないようにする

分類Dev

Razor / Syncfusion:非同期ページの読み込み時に、アクションを実行しない限り、treedataにデータが入力されません

分類Dev

jQueryラジオボタンの値はページの読み込み時に変更されません

分類Dev

クエリが実行されている場合、別のページは読み込まれません

分類Dev

ページの読み込み時にテキストエリアにフォーカスを設定できません

分類Dev

#ページの読み込み時にURLが自動的に表示されます

分類Dev

ApacheUbuntuのデフォルトページが読み込まれていません

分類Dev

Reduxフォーム-composeの使用時にinitialValuesが更新されない

分類Dev

AngularMatTabChangeEventはページの読み込み時にトリガーされません

Related 関連記事

  1. 1

    DateBox jQueryMobile-ページの読み込み後に設定された最小属性。終了日は開始日より前には許可されていません

  2. 2

    最初のページの読み込み時に、ページサイズがngグリッドで選択されていません

  3. 3

    Reactコンポーネントの読み込み時にgapiが定義されていません

  4. 4

    ページの読み込み時にすべての子がチェックされている場合、親はチェックされません

  5. 5

    GoogleMapsはページの読み込み時に初期化されません

  6. 6

    反応:ボタンonClick関数はページの読み込み時に実行されていますが、クリックしていません

  7. 7

    select_tagのクラスがページの読み込み時に読み込まれません

  8. 8

    Tkinterページが読み込まれていません

  9. 9

    Wordpressテーマ設定ページが読み込まれません

  10. 10

    ページ読み込み時にフォーム値を設定する

  11. 11

    読み込み時にサイトで画像が正しくフォーマットされていません

  12. 12

    Reduxフォーム:initialValuesはフォーム値を設定しません

  13. 13

    javascriptが呼び出されましたが、ページに読み込まれていません

  14. 14

    一部のWordPressページが読み込まれていません。内容が表示されない

  15. 15

    ページの読み込み時にフォームにデフォルト値を設定するにはどうすればよいですか?(Rails)

  16. 16

    Rails:ネストされたリモートフォームはページの読み込み時に機能しません

  17. 17

    画像がウェブページに読み込まれていません

  18. 18

    .htaccess:画像がウェブページに読み込まれていません

  19. 19

    背景画像が外部ページに読み込まれていません

  20. 20

    Wordpressの管理ページが読み込まれていません

  21. 21

    フォーム送信時にページが再読み込みされないようにする

  22. 22

    Razor / Syncfusion:非同期ページの読み込み時に、アクションを実行しない限り、treedataにデータが入力されません

  23. 23

    jQueryラジオボタンの値はページの読み込み時に変更されません

  24. 24

    クエリが実行されている場合、別のページは読み込まれません

  25. 25

    ページの読み込み時にテキストエリアにフォーカスを設定できません

  26. 26

    #ページの読み込み時にURLが自動的に表示されます

  27. 27

    ApacheUbuntuのデフォルトページが読み込まれていません

  28. 28

    Reduxフォーム-composeの使用時にinitialValuesが更新されない

  29. 29

    AngularMatTabChangeEventはページの読み込み時にトリガーされません

ホットタグ

アーカイブ