yanis_kondakov
@yanis_kondakov

Где хранить текущее значение формы?

Всем привет. Собственно пишу на reactJs + redux.

Есть формы, и сейчас, когда там меняется информация, я храню меняющуюся информацию в state именно этого компонента, а когда нажимается кнопка сохранить, отправляю в бд и соответственно в state всего приложения.

Возник вопрос, стоит ли эти текущие state объявить в state всего приложения и менять их там? Насколько это целесообразно, оптимизировано и так далее. Что тут считается best practices?

Update.
Дополню вопрос ссылкой на пример.

И немножко кода
spoiler
state = {
    currentDepartment: {
      name: ''
    }
  }
  
  // make request to DB
  componentWillMount() {
    this.props.fetchDepartments();
    this.props.fetchDepartment(+this.props.params.departmentId);
  }
  
  // set current state value from DB
  componentWillReceiveProps(nextProps) {
    this.setState({
      currentDepartment: {
        name: nextProps.singleDepartment.name
      }
    });
  }

  // change current state data on input change
  handleInputChange = (evt) => {
    const target = evt.target;
    const value = target.value;
    const name = target.name;
    this.setState({
      currentDepartment: {...this.state.currentDepartment, [name]: value}
    });
  }

  // send updated data to DB
   handleUpdate = (evt) => {
    evt.preventDefault();
    const previousDepartment = h.findById(this.props.singleDepartment.id, this.props.departments);
    const updatedDepartment = h.updateItem(previousDepartment, this.state.currentDepartment);
    this.props.saveDepartment(updatedDepartment);
  }

  • Вопрос задан
  • 233 просмотра
Решения вопроса 1
maxfarseer
@maxfarseer
https://maxpfrontend.ru, обучаю реакту и компании
я храню меняющуюся информацию в state именно этого компонента

Это логично, для этого (изменяемых свойств компонента) и был придуман state.

стоит ли эти текущие state объявить в state всего приложения и менять их там

Я так понимаю, под state всего приложения понимается либо redux store, либо state какого-то родительского компонента. Если второе - однозначно нет, так как при изменении - будет перерисовываться всё приложение (все потомки), если же речь идет про redux store, то какие-то данные, которые необходимы вам в других местах (кроме текущего компонента) стоит класть туда, но при этом иметь ввиду, что все компоненты, которые "подписаны на эти данные" (с помощью функции connect) будут перерисовываться при изменении.

p.s. отвечая на вопрос "где хранить текущее значение формы?" - я бы хранил в state компонента, так как обычно оно больше нигде в других компонентах не нужно.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы