如何从 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});
}
}
明确地说,我正在学习 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});
}
}