@KIberWarriorJs

Правильная ли реализация паттерна Switch event на хуках useState?

Всем привет , совсем недавно познакомился с реакт паттерном "Event switch" , и написал его реализацию в моём понимании . В моём случае это обычная форма с инпутами , но при изм. текст в одном инпуте весь компонент ре-рендерится весь комп. BasicForm , хотелось бы узнать правильное ли это поведение и можно ли как нибудь это улучшить ?

export default function BasicForm({ type, fields }: IBasicFormProps) {
  const [inputState, setInputState] = useState({
    title: "",
    description: "",
  });
  const handleChange = (e: any) => {
    const type = e.target.name;
    switch (type) {
      case "title":
        return setInputState({
          ...inputState,
          [e.target.name]: e.target.value,
        });
      case "description":
        return setInputState({
          ...inputState,
          [e.target.name]: e.target.value,
        });
      default:
        return console.warn(`No case for event type "${type}"`);
    }
  };
  const renderBasicForm = (type: string): JSX.Element => {
    switch (type) {
      case CREATE_ITEM_FORM:
        return (
          <Box>
            {fields.map((inputField: any, i) => {
              return (
                <InputItem
                  type={inputField.type}
                  placeholder={inputField.description}
                  value={inputState}
                  onChangeEvent={handleChange}
                  label={inputField.label}
                  name={inputField.name}
                />
              );
            })}
          </Box>
        );
      default:
        <div>There is no data to display</div>;
    }
  };
  return <div>{renderBasicForm(type)}</div>;
}
  • Вопрос задан
  • 58 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы