IT이야기

반응 후크가 환원제를 완전히 대체할 수 있는가?

cyworld 2022. 4. 6. 19:52
반응형

반응 후크가 환원제를 완전히 대체할 수 있는가?

나는 리액션 훅을 배우고 있는데, 지금까지 그것이 리액션 훅을 만드는 방법이라는 것을 보았다. 이 멋진 새로운 것이 생기기 전에는 없었던 리액션 훅이었다.

나는 또한 후크를 사용하여 다른 구성요소들 간에 상태를 공유하려고 노력했고, 구성요소가 상태 내부의 값을 변경하면 다른 구성요소가 업데이트를 받는다.그렇다면 Redex나 다른 국가 관리 솔루션이 리액션 후크로 완전히 대체될 수 있을까?장단점이 있는가?

Redex 기반 앱을 후크로 마이그레이션하기 전에 고려해야 할 사항이 있으십니까?나는 큰 제3자 도서관을 좋아하지 않는다. 만약 내가 반응하는 도구로 같은 목표를 달성할 수 있다면, 왜 안 될까?

Redex의 사용이 프로펠링을 피해야 하는 필요성에 기초하는 경우에만 반응 컨텍스트(후크 사용 여부 등)로 충분할 수 있다.

하지만 당신의 질문에 답하기 위해: 아니오.당신은 당신의 버전을 완전히 구현할 수 있다.dispatch action그리고get state컨텍스트와 후크만으로, 환원 없이, 그러나 환원제는 그들보다 더 많은 것을 테이블에 제공한다.미들웨어, 앱의 상태를 유지하는 기능, 더 쉬운 디버그 등

당신의 앱이 환원제가 제공할 수 있는 모든 혜택을 필요로 하지 않는다면, 그것을 사용하지 마십시오.그러나 "맥락 + 후크가 환원제를 대체할 수 있는가?"라는 문구는 거짓이다.

이 패턴은 내 Redex 사용 사례(아래 코드)를 복제하기 위해 찾은 것이다.

라는 생각이다.setValue함수는 값을 포함하는 매개변수로 이벤트를 발생시키고 이벤트 핸들러는 후크 내부 상태를 업데이트한다.

import { useState, useEffect } from 'react'

export function useValue(name, initial) {
  const [value, _setValue] = useState(initial)

  function setValue(value) {
    const evt = new CustomEvent(name, {detail: {value}})
    window.document.dispatchEvent(evt)
  }

  useEffect(() => {
    function handleEvent (evt) {
      _setValue(evt.detail.value)
      evt.stopPropagation()
    }
    window.document.addEventListener(name, handleEvent)
    return () => {
      window.document.removeEventListener(name, handleEvent)
    }
  }, [])

  return [value, setValue]
}

참조URL: https://stackoverflow.com/questions/57845824/can-react-hooks-completely-replace-redux

반응형