Я использую act-select v2.0 , чтобы создать выпадающий список с предопределенными элементами. У меня это связано с запросом Parse, который возвращает параметры с текстовым поиском.
Моя проблема в том, что я не могу понять, как передать выбранное значение в родительский компонент.
Компонент имеет имя RestaurantSelect
и выглядит следующим образом (сокращенно):
import React, { Component } from 'react'
import AsyncSelect from 'react-select/lib/Async'
type State = {
inputValue: string
}
const filterRestaurants = (inputValue: string) => {
return (
// ... results from Parse query (this works fine)
)
}
const promiseOptions = inputValue => (
new Promise(resolve => {
resolve(filterRestaurants(inputValue))
})
)
export default class WithPromises extends Component<*, State> {
state = { inputValue: '' }
handleInputChange = (newValue: string) => {
const inputValue = newValue.replace(/\W/g, '')
this.setState({ inputValue })
return inputValue
}
render() {
return (
<AsyncSelect
className="select-add-user-restaurant"
cacheOptions
defaultOptions
placeholder="Start typing to select restaurant"
loadOptions={promiseOptions}
/>
)
}
}
Родительский компонент, который вызывает RestaurantSelect
, выглядит следующим образом:
import React from 'react'
import RestaurantSelect from './RestaurantSelect'
class AddUserRestaurant extends React.Component {
constructor() {
super()
this.state = {
name: ''
}
}
addUserRestaurant(event) {
event.preventDefault()
// NEED INPUT VALUE HERE!
}
render() {
return (
<form onSubmit={(e) => this.addUserRestaurant(e)}>
<RestaurantSelect />
<button type="submit">Add</button>
</form>
)
}
}
export default AddUserRestaurant
Если я проверяю компонент, я вижу, что атрибут ввода value
соответствует набранному тексту, но когда значение выбрано из выпадающего списка, оно исчезает (т. Е. Изменяется от <input value="Typed name" />
до <input value />
. Отдельный <span>
появляется элемент со значением метки, но я не хочу получать его из DOM, это не похоже на предполагаемый метод.
Если я буду искать на компоненте консоли React мой компонент, RestaurantSelect
ничего не будет найдено:
![Blank results for component search](https://i.stack.imgur.com/A0Prh.png)
Но, если я ищу «Выбрать», он появляется и имеет props
и state
, которые имеют выбранное значение (в данном случае «Time 4 Thai»):
![Component result with props and state](https://i.stack.imgur.com/AcwlF.png)
Однако console.log(this.state)
в RestaurantSelect показывает только inputValue
, ничего из <Select/>
Есть ли способ получить доступ к props
и state
компонента высшего порядка?