Получение Select Value с помощью React

Попытка получить доступ к Bootstraps, выберите значение формы, используя React props. Это то, что я пробовал до сих пор, но он не сохраняет значение параметров.

Пример кода:

class BottomBar extends React.Component {

  constructor(props) {
    super(props);
    this.state =  {
      hidden: true,
      items: [],
      text: '',
      priority: ''
    };

    this.handleClick = this.handleClick.bind(this);
    this.handleChangeEvent = this.handleChangeEvent.bind(this);
    this.handleSubmit = this.handleSubmit.bind(this);
    this.handlePriority = this.handlePriority.bind(this);
  };
  handleChangeEvent(e) {
    this.setState({text: e.target.value});


  }
  handlePriority(t) {
    this.setState({priority: t.target.value});
  }
  handleSubmit(e) {
    e.preventDefault();
    if (!this.state.text.length) {
      return;
    }
    const newItem = {
      text: this.state.text,
      id: Date.now(),
      priority: this.state.priority
    };
    this.setState(state => ({items: state.items.concat(newItem), text: '', priority: ''}));
    console.info(newItem);
  }

  handleClick(t) {
    i++;
    if (i === 1) {
        this.setState({hidden: false});
    } else if (i === 2) {
        this.setState({hidden: true});
        i = 0;
    }

  }
  render() {
    const { classes } = this.props;
    return(

      <React.Fragment>
        <AddCard items = {this.state.items} id = {this.state.id} priority = {this.state.priority} item = {this.state.item}/>
        <CssBaseline />
        <AppBar position = "fixed" color = "primary" className = {classes.appBar}>
          {!this.state.hidden ? <TodoList text = {this.state.text} handlePriorty = {this.handlePriorty} priority = {this.state.priority} handleSubmit = {this.handleSubmit} items = {this.state.items} handleChangeEvent = {this.handleChangeEvent}/> : null}
          <Toolbar className = {classes.toolbar}>
            <IconButton color = "inherit" aria-label = "Open drawer">
              <MenuIcon />

            </IconButton>
            <a href = "#" onClick = {this.handleClick}>
            <Button variant = "fab" color = "secondary" aria-label = "Add" className = {classes.fabButton}>
              <AddIcon />
            </Button>
            </a>     
            <div>

              <IconButton color = "inherit">
                <SearchIcon />
              </IconButton>
              <IconButton color = "inherit">
                <MoreIcon />
              </IconButton>
            </div>

          </Toolbar>
        </AppBar>
      </React.Fragment>
    );
  }

}

class TodoList extends React.Component {

  render() {
    return(
      <div className = "container">

      <form onSubmit = {this.props.handleSubmit}>
        <div className = {"form-group"}>
          <label htmlFor = {"title"}>Enter A Task Title</label>
          <input value = {this.props.text} onChange = {this.props.handleChangeEvent} type = "text" className = {"form-control"} id = "title" rows = "3"></input>
        </div>
        <div className = {"form-group"}>
            <label htmlFor = {"exampleFormControlSelect1"}>Example select</label>
              <select onChange = {this.props.handlePriority} className = {"form-control"} id = "exampleFormControlSelect1">
                <option value = {this.props.priority} onChange = {this.props.handlePriority}>Low Priority</option>
                <option value = {this.props.priorty} >Medium Priority</option>
                <option value = {this.props.priorty} >High Priority</option>
                <option value = {this.props.priorty} >Important</option>
                <option value = {this.props.priorty} >Very Important</option>
              </select>
            </div>
        <button className = {"btn btn-primary btn-custom"}>Add : {this.props.items.length + 1}</button>
      </form>
    </div>
    );
  }
}

Мой код содержит два класса, один из которых устанавливает сохраненные значения в состояниях, а мой второй класс принимает эти состояния через реквизиты. Мой текстовый ввод работает нормально, но мой селектор select / options, похоже, не сохраняет выбранное значение.

Вывод:

Получение Select Value с помощью React

Получение Select Value с помощью React

Спасибо за конструктивный отзыв.

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
4
0
3 664
1

Ответы 1

Я настоятельно рекомендую вам разбить код на более мелкие функции. В частности, я бы порекомендовал class component в качестве оболочки и function components для ваших узлов select и option.

Во-первых, давайте создадим function component для option node.

const Option = ({ value, description }) => (
  <option value = {value}>{description}</option>
);

Как видите, он принимает 2 аргумента: value и description. Не стесняйтесь добавлять свои собственные.

Затем давайте создадим function component для нашего select node.

const SelectBox = ({ children, onChange, value }) => (
  <select onChange = {onChange} value = {value}>
    {children}
  </select>
);

И в качестве последнего шага мы собираем все вместе:

class App extends React.Component {
  state = {
    value: 2
  };

  handleChangeEvent = e => {
    this.setState({ value: e.target.value });
  };

  render() {
    return (
      <div className = "App">
        <SelectBox onChange = {this.handleChangeEvent} value = {this.state.value}>
          <Option value = "1" description = "First Item" />
          <Option value = "2" description = "Second Item" />
          <Option value = "3" description = "Third Item" />
        </SelectBox>
      </div>
    );
  }
}

Ссылка на codebox

Другие вопросы по теме