Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- ELECTRON
- camera access
- silent printing
- Recoil
- react-native-dotenv
- npm package
- Each child in a list should have a unique "key" prop.
- github 100mb
- device in use
- github lfs
- vercel git lfs
- 이미지 데이터 타입
- nextjs
- electron-packager
- adb pair
- react-native
- custom printing
- adb connect
- github pdf
- rolldown
- animation
- 티스토리 성능
- Can't resolve
- html
- Failed to compiled
- Git
- camera permission
- dvh
- ffi-napi
- augmentedDevice
Archives
- Today
- Total
Bleeding edge
2022/10/24 - TIL 본문
자바스크립트로 CBD 구현하기
/*
const eventHolder = [];
export default eventHolder;
*/
class Component {
constructor(props) {
this.props = props;
this.#holdEvents();
}
//Component의 인스턴스를 생성할 때, 부모로부터 자식에게 값을 넘길 때
//props에 담아서 넘긴다.
setState(newState) {
this.state = { ...this.state, ...newState };
// if (this.state !== newState) this.state = newState;
console.log('[RE-RENDERING] state:', this.state);
render();
}
//component의 상태가 변하면 component를 새로 그린다
#holdEvents() {
//setState와는 다르게 외부에서는 접근할 수 없게 #를 사용하였다
const events = this.addEventListener?.();
if (!events) return;
for (const event of events) {
//addEventListener(){return [{type:"click",
//selector:".main_something", handler:func}, {}]}
//이렇게 addEventListener는 객체를 반환하기 때문에 for문으로 받을 수 있다.
if (event.selector === 'window' || event.selector === null) {
eventHolder.push(event);
//중복된 이벤트는 입력되지 않는다.
continue;
}
const duplicated = eventHolder.find(({ type, selector }) =>
type === event.type && selector === event.selector);
if (!duplicated) {
const { selector, handler } = event;
// handler를 monkey patch한다.
event.handler = e => {
// e.target이 selector의 하위 요소일 수도 있다.
if (e.target.matches(selector) || e.target.closest(selector)) handler(e);
};
eventHolder.push(event);
}
}
}
render() {
throw new Error(`Component의 서브 클래스는 DOMString을 반환하는 'render' 메서드를 구현해야 합니다.`);
}
}
'ConnecTo' 카테고리의 다른 글
2022/10/26 - TIL (0) | 2022.10.26 |
---|---|
2022/10/25 - TIL (0) | 2022.10.25 |
2022/10/20 - TIL (0) | 2022.10.21 |
2022/10/19 - TIL (0) | 2022.10.19 |
2022/10/18 - TIL (1) | 2022.10.18 |