내 마음을 데코레이터 주위에 완전히 감싸려고하고 있는데, 나는 리플 럭스 구현에서 사용할 수있는 몇 가지 깔끔한 아이디어를 가지고있었습니다. 저장소의 클래스 메소드에 액션을 태그로 지정하고 해당 액션이 생성 될 때마다 태그가있는 메소드를 호출하는 것을 알고 있습니다. 생성자 안에, 그러나데코레이터 내에서 클래스 인스턴스 가져 오기
class Action {
private static methods: Method<FakeData>[] = [];
public static register(method: Method<FakeData>) {
this.methods.push(method);
}
constructor(payload: FakeData);
constructor(store: Store, method: string);
constructor(payload: any, method?: string, descriptor?: PropertyDescriptor) {
if (method) {
//TODO need actual instance of class here....
Action.register(payload[method].bind(payload));
return;
}
this.trigger(payload);
}
public get payload() {
return Math.random();
}
private trigger(payload: FakeData) {
Action.methods.forEach(m => m(payload));
}
}
: 액션 클래스에서, 나는 배열하는 방법을 등록 할 다음
@Action
public setData(data: FakeData) {
console.log(this);
this.state.data = data;
}
:
우선, 내가 저장 방법을 태그 할 상점의 실제 인스턴스에 액세스 할 권한이 없습니다. 생성자를 얻을 수는 있지만 목표를 달성하는 데 사용할 수 있는지 확신 할 수 없습니다. 아마도 생성자 대신 모든 상점을 엄격하게 고정시켜야합니다.
나는이 장식을 올바른 방법으로 생각하지 않을 것이라고 확신하므로 어떤 통찰력도 인정 될 것입니다!
Link to full code on Typescript Playground
그것은 분명하지 않다 네가 무엇을 요구하는지. 그리고 코드에 대한 링크가 있으면 좋지만 항상 질문에 코드를 게시해야합니다. –
의견을 보내 주셔서 감사합니다. 잘하면 더 명확하게 업데이 트되었습니다. –