Выберите значение не обновляется при изменении в React - PullRequest
0 голосов
/ 26 апреля 2020

Когда я выбираю опцию в select, в заполнителе или метке она не обновляется до выбранного значения. У меня нет больше идей, как это исправить :(

У меня есть два компонента. Первый:

class CreateProfile extends Component {
  state = {
    position: "",
  };

  addPosition = e => {
    const positionChosen = e.target.value;
    this.setState({
      position: positionChosen
    });
  };

  render() {
    const { position } = this.state;

  return(
   <AssignPosition
    addPosition={this.addPosition}
    position={position}
   />
 )
}
}

И во втором файле есть:

class AssignPosition extends Component {
  render() {
    const { addPosition, position } = this.props

  return(
    <select
       name="select"
       onChange={addPosition}
       value={position}
    >
       <option value="null">Choose position</option>
       <option value="position1">position1</option>
       <option value="position2">position2</option>
       <option value="position3">position3</option>
    </select>
  )
 }
}

Когда Я выбираю позицию, поскольку в качестве метки все еще выбрано «Выбрать позицию», а не значение, которое я выбрал. Я не хочу вставлять здесь слишком много кода, но на самом деле это многошаговая форма. В AssignPosition я выбираю позицию а затем нажмите «Далее» для сводки. И что важно, когда я нажимаю «Далее», а затем я нажимаю «Назад» в метке выбора, есть правильное значение, поэтому оно обновляется, но как-то слишком поздно ...

Любая помощь будет принята. Пожалуйста, дайте мне знать, если вам нужно больше кода.

Редактировать: Я обнаружил проблему. В AssignPosition у меня также есть функция ShouldComponentUpdate.

 shouldComponentUpdate(nextProps) {
    if (this.props.addTest === nextProps.addTest) {
      return false;
    } else {
      return true;
    }
  }

Мне это нужно , потому что на том же компоненте я использую MaterialTable и без этой функции у меня была проблема, описанная здесь: https://github.com/mbrn/material-table/issues/469 Когда я удаляю ShouldComponentUpdate, выборка работает правильно, но выборка в MaterialTable не делает: / Любые идеи как это исправить?

1 Ответ

1 голос
/ 26 апреля 2020

Если я правильно понимаю - по какой-то причине вы используете shouldComponentUpdate, поэтому вам следует проверить, изменилась ли позиция в подпорках. Условие в shouldComponentUpdate должно содержать проверку this.props.position === nextProps.position.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...