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

时间:2019-09-16 12:15:36

标签: reactjs sharepoint sharepoint-online spfx

要清楚,我正在学习TypeScript和React用于spfx开发。我已经阅读并参加了各种资源和Stack Overflow上的教程和其他答案,但发现它们不足以帮助我。

这是我在EvalReqNewForm类(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});
        });
      }

我想使用另一个类中的_getGrades()函数在ComponentDidMount()中使用,以便从SP列表中获得“成绩”。

它涉及使用道具吗?还是可以将函数简单地导出并导入到我要使用它的类中?

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

1 个答案:

答案 0 :(得分:1)

TL; DR

创建一个仅依赖于其参数的函数并导出/导入它。


  

还是可以将函数简单地导出并导入到我要使用它的类中?

您可以做的是创建一个仅取决于其参数的函数。

所以会像

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});        
}

我还看到您正在使用Promise,因此也许您需要使用async / await

编辑:

如评论中所述

  

我似乎无法在课程中使用导出

您应该在类之外使用它,您将不得不使用函数。 类的一面具有所有逻辑,而类的另一面仅调用外部函数。

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

class ... {

    ...

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

}