리액트 useState 동작방식 연습중인데
values는 살아있으니까 c에서 3을 뱉어야 하지않냐
왜 2를 뱉는거냐
let values = [];
function useState(initialValue) {
function setValue(newValue) {
values[0] = newValue;
}
return [values[0] || initialValue, setValue];
}
function render(Component) {
const c = Component();
c.render();
return c;
}
return {
useState,
render,
};
})();
function Component() {
const [count, setCount] = store.useState(1);
return {
render: () => console.log(count),
click: () => setCount(count + 1),
};
}
const a = store.render(Component); //1로 초기화
a.click(); // 2로 증가
const b = store.render(Component); // 업데이트된 2를 내보냄
a.click();
const c = store.render(Component);
1로 초기화해서 클릭 두 번 하면 3 아님?
콘솔찍으면 1 2 2 나옴
두번째 a.click() 을 b.click()으로 바꾸면 1,2,3나온다
1번만 실행해줘서........당연히 똑같은...