如何从 class 中导出函数,以便能够将其导入到另一个 class 中使用

How to export a function from a class, so to be able to import it into another class to use

明确地说,我正在学习 TypeScript 和 React 以进行 spfx 开发。我已经阅读并参与了各种来源和 Stack Overflow 上的教程和其他答案,但没有发现它们足以帮助我。

这是我在 EvalReqNewForm class (getGrades()) 中的函数:

export default class EvalReqNewForm extends React.Component<IEvalReqNewProps, IEvalReqNewState> {
    constructor(props){
        super(props);
        this.state = {
            EvalType: null,
            JobTitReportTo: null,
            JobTitReportToNum: null,
            PropGradeList: [],
            SelectedGrade: undefined,
            CompPos: null,
            ContextNewJobCode: null
        };
        this._onJobTitReportToChange = this._onJobTitReportToChange.bind(this);
        this._onJobTitReportToNumChange = this._onJobTitReportToNumChange.bind(this);
        this._onPropGradeChange = this._onPropGradeChange.bind(this);

    }

...

public _getGrades() {
        pnp.sp.web.lists.getByTitle("Grades").items.get().then((items: any[]) =>{
          let returnedGrades:IDropdownOption[]= items.map((item) =>{return {key:item.Title, text:item.Title};});
         this.setState({PropGradeList : returnedGrades});
        });
      }

我想使用另一个 class 的 _getGrades() 函数在 ComponentDidMount() 中使用,以便从 SP 列表中 'Grades'。

是否涉及使用道具?或者可以简单地将函数导出并导入到我想使用它的 class 中吗?

请理解我在这里学习基础知识!

TL;DR

创建一个仅依赖于它的参数和 export/import 它的函数。


Or can the function be simply exported and imported into the class where I want to use it?

您可以做的是创建一个仅依赖于它的参数的函数。

所以它会像

export function getGrades(something){
    // do what ever you want with something
    return somethingYouDid
}

然后将其导入其他文件并像

一样使用它
import { getGrades } from '...'

...

public _getGrades() {
    const results = getGrades(someDataFromSomeWhere)
    this.setState({PropGradeList : results});        
}

我也看到你在使用承诺,所以你可能需要在你的情况下使用 async/await

编辑:

如评论所述

I can't seem to use export within a class

你应该在 class 之外使用它,你将不得不使用它。 class 的一个外侧具有所有逻辑,另一个在 class 内部仅调用外部函数。

export function getGrades(something){
    // do what ever you want with something
    return somethingYouDid
}

class ... {

    ...

    public _getGrades() {
        const results = getGrades(someDataFromSomeWhere)
        this.setState({PropGradeList : results});        
    }

}