У меня на странице тонна select
, и я не хочу, чтобы вызовы API для всех из них запускались каждый раз при загрузке страницы. Как я могу пропустить loadOptions
при инициализации асинхронных react-select
компонентов?
Не загружайте параметры при первоначальном рендеринге
Ответы (2)
Согласно документации, похоже, вы можете указать autoload={false}
. Из документации:
Если вы не укажете свойство autoload = {false}, элемент управления автоматически загрузит набор параметров по умолчанию (например, для ввода: '') при его монтировании.
Обновлено:
Чтобы обойти проблему, когда вам нужно что-то напечатать, вы можете добавить onFocus
обратный вызов. Это срабатывает, когда компонент "реакция-выбор" щелкает или вкладывается в него, вместо того, чтобы ждать, пока пользователь что-то напечатает. Это может выглядеть примерно так:
<ReactSelect
...otherProps
onFocus = { this.fetchData }
/>
Чтобы предотвратить постоянную повторную выборку данных, вы можете отслеживать, были ли данные извлечены где-то в состоянии. Вы можете объявить начальное состояние как fetched: false
, а затем в функции, которая загружает параметры, установите this.setState({ fetched: true })
. Наконец, ваша fetchData
функция может проверять this.state.fetched
перед запросом новых данных.
ReactDOM.findDOMNode(this).querySelector('input')
, а затем размывает и фокусирует его. Это вызывает запуск поиска и его отображение в раскрывающемся списке.
- person Michael Terry; 03.04.2018
state= {option1:'', option2:'', option3:''}
Если заполнен вариант 1, выберите значения # 2.
this.state.option1 && apicall for option 2().
Если заполнен вариант 2, выберите значения # 3.
this.state.option2 && apicall for option 3().
Все это можно в componentDidMount()
Это предполагает, что когда пользователь выбирает значение, вы сохраняете это значение в состоянии.