作为一名前Java工程师,我正在努力在Typescript/Javascript中有一个接口作为回调。
我有一个"worker“类,我在其中调用doWork(..., myWorkerCallback),回调由不同的回调方法组成。
interface WorkerCallback {
onWorkDone() : void
onError(message: String) : void
...
}在我的调用组件中,我会有一个实现回调接口的成员。
myWorkerCallback: WorkerCallback = {
onWorkDone() {
...
}
}现在,我需要访问这些回调方法中的React组件的状态。所以我需要绑定这个回调成员,对吗?但是如何绑定这个接口成员
发布于 2019-10-21 19:13:16
我不确定react原生的,但是将一些东西绑定到函数的典型方法是使用闭包:
interface IWorkerCallback {
onWorkDone(): void;
onError(message: string): void;
// ...
}
// Option 1: using object literals
function makeWorkerCallback(state: SomeState): IWorkerCallback {
return {
onWorkDone: () => {
state.update();
},
onError: () => { }
}
}
// Option 2: using classes
class WorkerCallback implements IWorkerCallback {
state: SomeState;
constructor(state: SomeState) {
this.state = state;
}
onWorkDone() {
this.state.update();
}
onError(message: string) { }
}
// Usage example
const myWorkerCallback1 = makeWorkerCallback(state1);
const myWorkerCallback2 = makeWorkerCallback(state2);
const myWorkerCallback3 = new WorkerCallback(state3);
const myWorkerCallback4 = new WorkerCallback(state3);尽管在这一点上,这些对象不是回调。它们是更多的。我会把它们重命名为"FooBarHandler“之类的。
https://stackoverflow.com/questions/58482738
复制相似问题