React-select не показывает значение в Laravel-mix - PullRequest
0 голосов
/ 02 октября 2018

Школа группы проектных групп предоставила интерфейс в React, для которого мы должны создать бэкэнд.Мы решили сделать это с Laravel.Теперь все работает хорошо, кроме одной вещи: в раскрывающемся списке не отображается выбранное значение в нашем приложении Laravel-mix, а в их приложении React.Мы ничего не меняли в выпадающем коде, поэтому кто-то может объяснить мне, почему он сейчас не работает?Я не очень опытен в React, поэтому любая помощь приветствуется.

Это код:

    /* handleChange passes the selected dropdown item to the state. */
  handleChange = (selectedOption) => {
    this.setState({ selectedOption });
        if (selectedOption) {
            console.log(`Selected: ${selectedOption.label}`);
        }
  };

    /* This render function, renders the grid, dropdown-menu, 'Add Item'-button
     * and 'Reset Layout'-button. This is also where the createElement() function
     * is called for each grid item.
     */
  render() {
    const { selectedOption } = this.state;
    const value = selectedOption && selectedOption.value;

    return (
        <div>
            <div className='widgetselecter'>
                <Select className='dropdown'
                    name="form-field-name"
                    value={value}
                    onChange={this.handleChange}
                    options={[
                        { value: 'one', label: 'One' },
                        { value: 'Clock', label: 'Clock' },
                        { value: 'Photo', label: 'Photo' },
                        { value: 'Weather', label: 'Weather' },
                    ]}
                    />
                <button className='addButton' onClick={this.onAddItem}>Add Item</button>
                <button className='reset' onClick={this.onLayoutReset}>Reset Layout</button>
                <span className='title'>/Dash</span>
            </div>
            <ResponsiveReactGridLayout
                onLayoutChange={this.onLayoutChange}
                onBreakPointChange={this.onBreakPointChange}
                {...this.props}>
                {_.map(this.state.items, el => this.createElement(el))}
            </ResponsiveReactGridLayout>
        </div>
        );
  }
}

1 Ответ

0 голосов
/ 02 октября 2018

Я исправил это, изменив:

value={value}

на:

value={selectedOption}

и удалил:

const value = selectedOption && selectedOption.value;

, чтобы он соответствовал коду примера на https://github.com/JedWatson/react-select.

handleChange = (selectedOption) => {
    this.setState({ selectedOption });
    console.log(`Option selected:`, selectedOption);
  }
  render() {
    const { selectedOption } = this.state;

    return (
      <Select
        value={selectedOption}
        onChange={this.handleChange}
        options={options}
      />
    );
...