tsyringe
🎲 TSyringe
📍 의존성 주입(Dependency Injection)
📍 의존성 주입의 장점
📍 reflect-metadata
// store/Store.ts
import 'reflect-metadata';
@singleton()
export default class Store {
count = 0;
listeners = new set();
update() {
this.listeners.forEach((listeners) => {
listeners();
})
}
addListener(listener) {
this.listeners.add(listener);
}
removeListener(listener) {
this.listeners.delete(listener);
}
}
// component/CountControl.tsx
import { container } from "tsyringe";
import Store from "../store/Store";
export default function CountControl() {
const store = container.resolve(Store);
const handleClickIncrease = () => {
store.count += 1;
store.publish();
}
const handleClickDecrease = () => {
store.count -= 1;
store.publish();
}
return (
<div>
<button onClick={handleClickIncrease}>
Increase
</button>
<button onClick={handleClickDecrease}>
Decrease
</button>
</div>
)
}📍 singleton (싱글톤)
✏️ 정리
Last updated