我正在 Flex 的 CRM 窗格中构建一个 React 表单,POST
当代理填写表单并点击提交按钮时,它将向外部服务提供数据。使用create-flex-plugin
Plugin Builder v3 中的示例代码,我已经成功地将数据从 redux 的表单字段中保存下来。但是,作为 Flex 中的代理,如果我打开了多个预订,当我在它们之间切换时,它们使用相同的数据。如何设计我的表格,以便代理可以在表格中输入不同预订的数据并将它们分开保存?
我对 Flex、React 和 Redux 比较陌生,不确定是否有任何关于我需要做的 Flex 特定的事情,尤其是在处理多个并发预订时。我曾想过在 redux 中保留一个由 reservationId 或 taskId 键入的 Map,但尚不清楚如何将 taskId 传递给 reducer。我也不确定像 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>
);
}