#reactjs #jsx #fluent-ui #fluentui-react
#reactjs #jsx #fluent-пользовательский интерфейс #fluentui-реагировать
Вопрос:
Я использую компонент под названием DocumentPicker из библиотеки Fluent UI.
Этот компонент имеет несколько методов:
<DocumentPicker
removeButtonAriaLabel="Remove"
onRenderSuggestionsItem={SuggestedBigItem as any}
onResolveSuggestions={ /* do some stuff here */ }
onRenderItem={SelectedDocumentItem}
getTextFromItem={getTextFromItem}
pickerSuggestionsProps={pickerSuggestionsProps}
disabled={isPickerDisabled}
inputProps={inputProps}
/>
Для моего конкретного сценария я бы хотел, чтобы метод этого компонента вызывал другой метод. Например, пусть onEmptyInputFocus запускает onResolveSuggestions. Как я могу это сделать?
[редактировать] По сути, я пытаюсь выполнить с помощью функционального компонента то, что я мог бы сделать, используя «это» для компонента класса. В моем компоненте класса я мог бы написать что-то вроде:
public onEmptyInputFocus () {this.onResolveSuggestions();}
Ответ №1:
Поскольку вы указываете эти методы, это довольно просто:
const _onEmptyInputFocus = () => {
onResolveSuggestions()
}
<DocumentPicker
removeButtonAriaLabel="Remove"
onEmptyInputFocus={_onEmptyInputFocus}
onRenderSuggestionsItem={SuggestedBigItem as any}
onResolveSuggestions={onFilterChanged}
onRenderItem={SelectedDocumentItem}
getTextFromItem={getTextFromItem}
pickerSuggestionsProps={pickerSuggestionsProps}
disabled={isPickerDisabled}
inputProps={inputProps}
/>
Комментарии:
1. Должно быть, я что-то упускаю, это выдает ошибку, как я и ожидал. В моем коде нет функции onResolveSuggestions . Кроме того, я думаю, что я понимаю вашу точку зрения, но не всегда будет четность между методом и функцией. Позвольте мне обновить мой вопрос, чтобы сделать его более понятным.
2. У меня возникли проблемы с контекстом, в котором вы хотите запустить эти методы, это в другом компоненте?
3. Это тот же компонент. Я пытаюсь заставить мой сценарий работать без необходимости переписывать компонент. В компоненте класса я бы использовал «this» для вызова внутренних методов из другого метода, но я не могу найти эквивалент в функциональных компонентах.
Ответ №2:
Думаю, теперь мне совершенно ясно, что это невозможно выполнить с помощью функциональных компонентов. Вам нужно будет знать внутренние компоненты компонента и настраивать его.
Обходным путем является использование ссылки и работа с базовым элементом HTML. В Fluent UI prop на самом деле называется ComponentRef , а не просто ref .