異なる入力コンポーネントに異なる反応成分をロードする必要があります。これは非常に巨大になるので、私はスイッチケースを使いたくない。だから、ロードする各タイプとコンポーネントのマップを作成し、変数を使用して最終的なレンダーコンポーネント名を設定します。しかし、これは動作していません。文字列名からの反応成分の動的ロード
const FIELD_COMPONENTS_CLASSES_MAP = {
text: 'FieldsComponent',
phone: 'FieldsComponent',
email: 'FieldsComponent',
decimal: 'FieldsComponent',
date: 'FieldsComponent',
datetime: 'FieldsComponent',
location: 'FieldsComponent',
meeting: 'FieldsComponent',
number: 'FieldsComponent',
multi_select_check_box: 'FieldsComponent',
code_name_spinner: 'FieldsComponent',
};
export default class FieldsFactoryComponent extends React.Component {
constructor(props, context) {
super(props, context);
this.state = {field: this.props.field, options: this.props.options};
}
componentWillReceiveProps(nextProps) {
this.setState({field: nextProps.field, options: nextProps.options});
}
render() {
let Component = 'FieldsComponent';
if(this.state.field) {
Component = FIELD_COMPONENTS_CLASSES_MAP[this.state.field._data.type]
}
return (this.state.field ?
<Component field={this.state.field} options={this.state.options}
onSave={this.props.onSave}> </Component> : <div className="hidden"></div>)
}
}
ここでは、このアプローチが有効であるかどうかをテストしていたので、1つのコンポーネントのみを表示しています。私がここで紛失しているもの