2

POSTエージェントがフォームに入力して送信ボタンを押すと、外部サービスにデータを送信するFlex の CRM ペインで React フォームを作成しています。Plugin Builder v3のサンプル コードを使用してcreate-flex-plugin、フォーム フィールドのデータを redux で永続化することに成功しました。ただし、Flex のエージェントとして、複数の予約を開いている場合、それらを切り替えると、それらは同じデータを使用します。エージェントが異なる予約のフォームにデータを入力し、それらが別々に保持されるようにフォームを設計するにはどうすればよいですか?

私はFlex、React、Reduxに比較的慣れていないため、特に複数の同時予約を処理する場合に、何をする必要があるかについてFlex固有のものがあるかどうかわかりません。redux では、reservationId または taskId をキーとする Map を維持することを考えましたが、taskId をレデューサーに渡す方法が明確ではありません。また、redux-form のような他のツールが Flex の設計とうまく機能するかどうかもわかりません。

正しい方向を示したり、サンプル コードを取得したりすることは、大きな助けになります。

「サブカテゴリ」と呼ばれるフィールドを永続化する現在の実装は、次のようになります。

HrmFormState.js

const UPDATE_FORM = 'UPDATE_FORM';

const initialState = {
  subcategory: 'my category',
};

export class Actions {
  static updateForm = (e) => ({ type: UPDATE_FORM, text: e.target.value });
}

export function reduce(state = initialState, action) {
  switch (action.type) {
    case UPDATE_FORM: {
      return {
        ...state,
        subcategory: action.text,
      };
    }

    default:
      return state;
  }
}

HrmForm.Container.js


import { connect } from 'react-redux';
import { bindActionCreators } from 'redux';

import { Actions } from '../../states/HrmFormState';
import HrmForm from './HrmForm';

const mapStateToProps = (state) => ({
  subcategory: state['hrm-form'].hrmForm.subcategory,
});

const mapDispatchToProps = (dispatch) => ({
  updateForm: bindActionCreators(Actions.updateForm, dispatch),
});

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

HrmForm.jsx (スニペット)

  render() {
    if (!this.props.task) {
      return null;
    }

    return (
      <HrmFormComponentStyles>
        <form onSubmit={this.handleSubmit}>
          <label>
            Subcategory:
            <input type="text" value={this.props.subcategory} 
              onChange={this.props.updateForm} />
          </label>
          <input type="submit" value="Submit" />
        </form>
      </HrmFormComponentStyles>
    );
  }
4

0 に答える 0