wikibook/react-deep-dive-example

[문의] [초판] p193 , p202 내용문의

Closed this issue · 1 comments

우선 책을 너무 잘 읽고 있습니다. 좋은 책 써주셔서 감사합니다.

useState와 useEffect의 구현을 따라가며 예제를 해보고 있는데

const MyReact = function() {
	const global = {}
    let index = 0
    
    function useState(initialState){
    	if(!global.states) {
        	global.states = []
        }
        
        const currentState =  global.states[index] || initialState
        global.states[index] = currentState
        
        const setState = (function() {
        	//클로저로 index를 가둬두어서 동일한 index에 접근이 가능
        	let currentIndex = index
            return function(value){
            	global.states[currentIndex] = value
                //컴포넌트 렌더링이 들어가는 부분
            }
    })()
        
    index = index + 1
        
    return [currentState,setState]
}
const MyReact = (function () {
  const global = {};
  let index = 0;

  function useEffect(callback, dependencies) {
    const hooks = global.hooks;

    let previouseDependencies = hooks[index];

    let isDependenciesChanged = previouseDependencies
      ? dependencies.some(
          (val, idx) => !Object.is(val, previouseDependencies[idx])
        )
      : true;

    if (isDependenciesChanged) callback();

    hooks[index] = dependencies;
    index++;
  }

  return { useEffect };
})();

useEffect 구현 부분에만 즉시실행 함수로 감싸져 있는데 이유가 궁금합니다.
useState로 state를 만드는 부분에서는 스코프를 따로 만들 필요가 없어서일까요?

안녕하세요:) 답변드리도록 하겠습니다.

말씀하신대로 두개 다 즉시실행 함수로 감싸야 하는 것이 맞습니다. 전자에 경우 그게 누락되어 있는 것 같네요. ^^;
이부분 수정하도록 하겠습니다. cc) @wikibook

감사합니다.