在函数组件中让一个方法调用另一个方法

时间:2020-09-28 18:41:42

标签: reactjs jsx fluent-ui fluentui-react

我正在使用Fluent UI库中名为DocumentPicker的组件。

此组件有几种方法:

<DocumentPicker
    removeButtonAriaLabel="Remove"
    onRenderSuggestionsItem={SuggestedBigItem as any}
    onResolveSuggestions={ /* do some stuff here */ }
    onRenderItem={SelectedDocumentItem}
    getTextFromItem={getTextFromItem}
    pickerSuggestionsProps={pickerSuggestionsProps}
    disabled={isPickerDisabled}
    inputProps={inputProps}
  />

对于我的特定情况,我想让该组件的一个方法调用另一个方法。例如,让onEmptyInputFocus触发onResolveSuggestions。我该怎么做?

[edit]基本上,我试图使用功能组件来完成在类组件上使用“ this”所能完成的工作。在我的课堂组件中,我可以编写类似以下内容的

  public onEmptyInputFocus () {this.onResolveSuggestions();}

2 个答案:

答案 0 :(得分: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 :(得分:0)

我想我现在很清楚,它不能用功能组件来完成。您将必须知道该组件的内部并对其进行调整。

一种解决方法是使用ref并使用基础HTML元素。在Fluent UI中,该道具实际上称为componentRef,而不仅仅是ref。