Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Phased dispatcher #14701

Merged
merged 9 commits into from
Jan 30, 2019
Merged

Phased dispatcher #14701

merged 9 commits into from
Jan 30, 2019

Conversation

acdlite
Copy link
Collaborator

@acdlite acdlite commented Jan 26, 2019

Refactor Hooks module to use separate dispatcher implementations for mount versus update. Main benefit is to speed up initial render by removing update-only branches from the mount path.

I don't like looking at this top-level function #petty
Classes support readContext, but not any of the other dispatcher
methods. Function support all methods.

This is a more robust version of our previous strategy of checking
whether `currentlyRenderingFiber` is null.

As a next step, we can use a separate dispatcher for each phase of the
render cycle (mount versus update).
@sizebot
Copy link

sizebot commented Jan 26, 2019

ReactDOM: size: 🔺+1.0%, gzip: 🔺+0.5%

Details of bundled changes.

Comparing: e679a4b...5a76a40

react-dom

File Filesize Diff Gzip Diff Prev Size Current Size Prev Gzip Current Gzip ENV
react-dom.development.js +1.4% +0.4% 740.45 KB 751.16 KB 170.83 KB 171.46 KB UMD_DEV
react-dom.production.min.js 🔺+1.0% 🔺+0.5% 103.55 KB 104.62 KB 33.83 KB 34.01 KB UMD_PROD
react-dom.profiling.min.js +1.0% +0.8% 106.55 KB 107.61 KB 34.4 KB 34.66 KB UMD_PROFILING
react-dom.development.js +1.5% +0.4% 735.51 KB 746.22 KB 169.42 KB 170.04 KB NODE_DEV
react-dom.production.min.js 🔺+1.0% 🔺+0.3% 103.61 KB 104.67 KB 33.35 KB 33.46 KB NODE_PROD
react-dom.profiling.min.js +1.0% +0.5% 106.72 KB 107.78 KB 33.93 KB 34.1 KB NODE_PROFILING
ReactDOM-dev.js +1.4% +0.4% 758.14 KB 768.97 KB 170.63 KB 171.28 KB FB_WWW_DEV
ReactDOM-prod.js 🔺+0.8% 🔺+0.2% 311.04 KB 313.4 KB 57.43 KB 57.54 KB FB_WWW_PROD
ReactDOM-profiling.js +0.7% +0.3% 318.21 KB 320.55 KB 58.73 KB 58.88 KB FB_WWW_PROFILING
react-dom-unstable-fire.development.js +1.4% +0.4% 740.79 KB 751.5 KB 170.98 KB 171.6 KB UMD_DEV
react-dom-unstable-fire.production.min.js 🔺+1.0% 🔺+0.5% 103.57 KB 104.63 KB 33.84 KB 34.02 KB UMD_PROD
react-dom-unstable-fire.profiling.min.js +1.0% +0.8% 106.57 KB 107.62 KB 34.41 KB 34.67 KB UMD_PROFILING
react-dom-unstable-fire.development.js +1.5% +0.4% 735.85 KB 746.56 KB 169.56 KB 170.18 KB NODE_DEV
react-dom-unstable-fire.production.min.js 🔺+1.0% 🔺+0.3% 103.62 KB 104.68 KB 33.36 KB 33.46 KB NODE_PROD
react-dom-unstable-fire.profiling.min.js +1.0% +0.5% 106.74 KB 107.79 KB 33.94 KB 34.11 KB NODE_PROFILING
ReactFire-dev.js +1.4% +0.4% 757.35 KB 768.18 KB 170.55 KB 171.21 KB FB_WWW_DEV
ReactFire-prod.js 🔺+0.8% 🔺+0.2% 299.64 KB 302 KB 55.11 KB 55.2 KB FB_WWW_PROD
ReactFire-profiling.js +0.8% +0.3% 306.73 KB 309.07 KB 56.43 KB 56.57 KB FB_WWW_PROFILING
react-dom-test-utils.development.js 0.0% 0.0% 44.87 KB 44.87 KB 12.3 KB 12.3 KB UMD_DEV
react-dom-test-utils.production.min.js 0.0% 0.0% 9.97 KB 9.97 KB 3.71 KB 3.71 KB UMD_PROD
react-dom-test-utils.development.js 0.0% 0.0% 44.59 KB 44.59 KB 12.24 KB 12.24 KB NODE_DEV
react-dom-test-utils.production.min.js 0.0% 0.0% 9.74 KB 9.74 KB 3.65 KB 3.65 KB NODE_PROD
react-dom-unstable-native-dependencies.development.js 0.0% 0.0% 60.29 KB 60.29 KB 15.79 KB 15.79 KB NODE_DEV
react-dom-unstable-native-dependencies.production.min.js 0.0% -0.0% 10.75 KB 10.75 KB 3.71 KB 3.71 KB NODE_PROD
react-dom-server.browser.development.js +0.1% +0.1% 125.5 KB 125.61 KB 33.48 KB 33.5 KB UMD_DEV
react-dom-server.browser.production.min.js 🔺+0.1% 🔺+0.1% 18.57 KB 18.59 KB 7.16 KB 7.17 KB UMD_PROD
react-dom-server.browser.development.js +0.1% +0.1% 121.63 KB 121.74 KB 32.55 KB 32.57 KB NODE_DEV
react-dom-server.browser.production.min.js 🔺+0.1% 🔺+0.1% 18.49 KB 18.5 KB 7.15 KB 7.15 KB NODE_PROD
ReactDOMServer-dev.js +0.1% +0.1% 122.59 KB 122.7 KB 32.05 KB 32.09 KB FB_WWW_DEV
ReactDOMServer-prod.js 🔺+0.1% 🔺+0.1% 44.73 KB 44.78 KB 10.33 KB 10.34 KB FB_WWW_PROD
react-dom-server.node.development.js +0.1% +0.1% 123.69 KB 123.8 KB 33.09 KB 33.12 KB NODE_DEV
react-dom-server.node.production.min.js 🔺+0.1% 🔺+0.1% 19.36 KB 19.38 KB 7.45 KB 7.46 KB NODE_PROD
react-dom-unstable-fizz.browser.development.js 0.0% +0.1% 3.63 KB 3.63 KB 1.44 KB 1.44 KB UMD_DEV
react-dom-unstable-fizz.browser.development.js 0.0% +0.1% 3.45 KB 3.45 KB 1.39 KB 1.39 KB NODE_DEV
react-dom-unstable-fizz.browser.production.min.js 0.0% 🔺+0.2% 1.05 KB 1.05 KB 636 B 637 B NODE_PROD
react-dom-unstable-fizz.node.development.js 0.0% +0.1% 3.7 KB 3.7 KB 1.42 KB 1.42 KB NODE_DEV

react-art

File Filesize Diff Gzip Diff Prev Size Current Size Prev Gzip Current Gzip ENV
react-art.development.js +2.1% +0.5% 519.29 KB 530 KB 114.44 KB 115.06 KB UMD_DEV
react-art.production.min.js 🔺+1.1% 🔺+0.6% 95.6 KB 96.67 KB 29.64 KB 29.82 KB UMD_PROD
react-art.development.js +2.4% +0.6% 450.82 KB 461.53 KB 97.34 KB 97.96 KB NODE_DEV
react-art.production.min.js 🔺+1.7% 🔺+0.7% 60.63 KB 61.68 KB 18.81 KB 18.94 KB NODE_PROD
ReactART-dev.js +2.4% +0.7% 459.86 KB 470.69 KB 96.66 KB 97.32 KB FB_WWW_DEV
ReactART-prod.js 🔺+1.3% 🔺+0.5% 186.94 KB 189.3 KB 32.09 KB 32.26 KB FB_WWW_PROD

react-native-renderer

File Filesize Diff Gzip Diff Prev Size Current Size Prev Gzip Current Gzip ENV
ReactNativeRenderer-dev.js +1.9% +0.5% 584.71 KB 595.53 KB 127.06 KB 127.7 KB RN_FB_DEV
ReactNativeRenderer-prod.js 🔺+1.0% 🔺+0.5% 242.69 KB 245.17 KB 42.75 KB 42.96 KB RN_FB_PROD
ReactNativeRenderer-profiling.js +1.0% +0.3% 248.83 KB 251.3 KB 44.1 KB 44.25 KB RN_FB_PROFILING
ReactNativeRenderer-dev.js +1.9% +0.5% 584.62 KB 595.44 KB 127.03 KB 127.66 KB RN_OSS_DEV
ReactNativeRenderer-prod.js 🔺+1.0% 🔺+0.5% 242.7 KB 245.18 KB 42.75 KB 42.95 KB RN_OSS_PROD
ReactNativeRenderer-profiling.js +1.0% +0.3% 248.85 KB 251.32 KB 44.09 KB 44.24 KB RN_OSS_PROFILING
ReactFabric-dev.js +1.9% +0.5% 575.56 KB 586.38 KB 124.8 KB 125.44 KB RN_FB_DEV
ReactFabric-prod.js 🔺+1.1% 🔺+0.4% 235.89 KB 238.37 KB 41.32 KB 41.49 KB RN_FB_PROD
ReactFabric-profiling.js +1.0% +0.4% 241.19 KB 243.65 KB 42.61 KB 42.77 KB RN_FB_PROFILING
ReactFabric-dev.js +1.9% +0.5% 575.46 KB 586.28 KB 124.76 KB 125.39 KB RN_OSS_DEV
ReactFabric-prod.js 🔺+1.1% 🔺+0.4% 235.9 KB 238.38 KB 41.31 KB 41.49 KB RN_OSS_PROD
ReactFabric-profiling.js +1.0% +0.4% 241.2 KB 243.66 KB 42.61 KB 42.77 KB RN_OSS_PROFILING

react-test-renderer

File Filesize Diff Gzip Diff Prev Size Current Size Prev Gzip Current Gzip ENV
react-test-renderer.development.js +2.3% +0.6% 464.03 KB 474.74 KB 100.27 KB 100.88 KB UMD_DEV
react-test-renderer.production.min.js 🔺+1.7% 🔺+1.1% 62.02 KB 63.09 KB 19.24 KB 19.45 KB UMD_PROD
react-test-renderer.development.js +2.3% +0.6% 458.99 KB 469.7 KB 99.04 KB 99.66 KB NODE_DEV
react-test-renderer.production.min.js 🔺+1.7% 🔺+0.6% 61.7 KB 62.75 KB 19.07 KB 19.18 KB NODE_PROD
ReactTestRenderer-dev.js +2.3% +0.7% 468.6 KB 479.43 KB 98.66 KB 99.31 KB FB_WWW_DEV
react-test-renderer-shallow.development.js 0.0% -0.0% 36.84 KB 36.84 KB 9.35 KB 9.35 KB UMD_DEV

react-reconciler

File Filesize Diff Gzip Diff Prev Size Current Size Prev Gzip Current Gzip ENV
react-reconciler.development.js +2.4% +0.6% 448.65 KB 459.36 KB 95.84 KB 96.46 KB NODE_DEV
react-reconciler.production.min.js 🔺+1.7% 🔺+0.5% 61.81 KB 62.85 KB 18.69 KB 18.78 KB NODE_PROD
react-reconciler-persistent.development.js +2.4% +0.6% 447.02 KB 457.73 KB 95.2 KB 95.81 KB NODE_DEV
react-reconciler-persistent.production.min.js 🔺+1.7% 🔺+0.5% 61.82 KB 62.86 KB 18.7 KB 18.79 KB NODE_PROD

Generated by 🚫 dangerJS

Copy link
Collaborator

@sebmarkbage sebmarkbage left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Beautiful

Deletes mount-specific code from the update path, since it should be
unreachable. To continue supporting progressive enhancement (mounting
new hooks at the end of the list), we detect when there are no more
current hooks and switch back to the mount dispatcher. Progressive
enhancement isn't officially supported yet, so it will continue to warn.
@acdlite acdlite force-pushed the phased-dispatcher branch 4 times, most recently from 19f3cf0 to eaac7a5 Compare January 28, 2019 22:37
@acdlite acdlite force-pushed the phased-dispatcher branch 3 times, most recently from d18bb07 to 1f4c337 Compare January 28, 2019 22:56
Had to cheat more than I would like
@acdlite acdlite changed the title [WIP] Phased dispatcher Phased dispatcher Jan 29, 2019
@acdlite acdlite requested a review from sebmarkbage January 29, 2019 00:36
const hook = mountWorkInProgressHook();
// TODO: Lazy init API will change before release.
if (initialAction !== undefined && initialAction !== null) {
// $FlowFixMe - Must express with overloading.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this what you meant with the remaining Flow issue? That's fine to leave since you're changing it anyway and even then you might end up needing it.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm about to open a follow-up PR

@matthargett

This comment has been minimized.

@gaearon
Copy link
Collaborator

gaearon commented Jan 29, 2019

@matthargett

Yes, we plan to get this and a few other PRs in before a stable version. If possible, I would like to ask you to refrain from asking questions about release schedule on a PR itself. It creates noise in the code review discussion and isn’t directly relevant to the PR. Instead, an appropriate venue might be a new issue, or a Twitter thread. Thank you! (There is no need to reply — please let’s keep this and other PR discussions focused on code.)

In order for this strategy to work, I had to revert progressive
enhancement support (appending hooks to the end). It was previously a
warning but now it results in an error. We'll reconsider later.
Even though the extra args are only used on mount, to ensure
type consistency.
@acdlite acdlite merged commit cb1ff43 into facebook:master Jan 30, 2019
n8schloss pushed a commit to n8schloss/react that referenced this pull request Jan 31, 2019
* Move DEV-only function right above where it's used

I don't like looking at this top-level function #petty

* Use different dispatchers for functions & classes

Classes support readContext, but not any of the other dispatcher
methods. Function support all methods.

This is a more robust version of our previous strategy of checking
whether `currentlyRenderingFiber` is null.

As a next step, we can use a separate dispatcher for each phase of the
render cycle (mount versus update).

* Use separate dispatchers for mount and update

* Remove mount code from update path

Deletes mount-specific code from the update path, since it should be
unreachable. To continue supporting progressive enhancement (mounting
new hooks at the end of the list), we detect when there are no more
current hooks and switch back to the mount dispatcher. Progressive
enhancement isn't officially supported yet, so it will continue to warn.

* Factoring nits

* Fix Flow

Had to cheat more than I would like

* More Flow nits

* Switch back to using a special dispatcher for nested hooks in DEV

In order for this strategy to work, I had to revert progressive
enhancement support (appending hooks to the end). It was previously a
warning but now it results in an error. We'll reconsider later.

* Always pass args to updateState and updateReducer

Even though the extra args are only used on mount, to ensure
type consistency.
NMinhNguyen referenced this pull request in enzymejs/react-shallow-renderer Jan 29, 2020
* Move DEV-only function right above where it's used

I don't like looking at this top-level function #petty

* Use different dispatchers for functions & classes

Classes support readContext, but not any of the other dispatcher
methods. Function support all methods.

This is a more robust version of our previous strategy of checking
whether `currentlyRenderingFiber` is null.

As a next step, we can use a separate dispatcher for each phase of the
render cycle (mount versus update).

* Use separate dispatchers for mount and update

* Remove mount code from update path

Deletes mount-specific code from the update path, since it should be
unreachable. To continue supporting progressive enhancement (mounting
new hooks at the end of the list), we detect when there are no more
current hooks and switch back to the mount dispatcher. Progressive
enhancement isn't officially supported yet, so it will continue to warn.

* Factoring nits

* Fix Flow

Had to cheat more than I would like

* More Flow nits

* Switch back to using a special dispatcher for nested hooks in DEV

In order for this strategy to work, I had to revert progressive
enhancement support (appending hooks to the end). It was previously a
warning but now it results in an error. We'll reconsider later.

* Always pass args to updateState and updateReducer

Even though the extra args are only used on mount, to ensure
type consistency.
JinmuGo added a commit to 42ForYou/RFS that referenced this pull request Jan 23, 2024
현재 dispatcher를 추적하는 Object currentDispatcher를 추가하였습니다.

이후 dispatcher는 mount/update로 구분하여 개발예정입니다.
mount/update logic 을 구분하여 개발함으로써 초기 rendering 속도를 높이기
위함입니다. 자세한 내용은 아래 react pull request를 참고해주세요

facebook/react#14701
JinmuGo added a commit to 42ForYou/RFS that referenced this pull request Jan 24, 2024
현재 dispatcher를 추적하는 Object currentDispatcher를 추가하였습니다.

이후 dispatcher는 mount/update로 구분하여 개발예정입니다.
mount/update logic 을 구분하여 개발함으로써 초기 rendering 속도를 높이기
위함입니다. 자세한 내용은 아래 react pull request를 참고해주세요

facebook/react#14701
JinmuGo added a commit to 42ForYou/RFS that referenced this pull request Jan 25, 2024
현재 dispatcher를 추적하는 Object currentDispatcher를 추가하였습니다.

이후 dispatcher는 mount/update로 구분하여 개발예정입니다.
mount/update logic 을 구분하여 개발함으로써 초기 rendering 속도를 높이기
위함입니다. 자세한 내용은 아래 react pull request를 참고해주세요

facebook/react#14701
JinmuGo added a commit to 42ForYou/RFS that referenced this pull request Jan 29, 2024
현재 dispatcher를 추적하는 Object currentDispatcher를 추가하였습니다.

이후 dispatcher는 mount/update로 구분하여 개발예정입니다.
mount/update logic 을 구분하여 개발함으로써 초기 rendering 속도를 높이기
위함입니다. 자세한 내용은 아래 react pull request를 참고해주세요

facebook/react#14701
JinmuGo added a commit to 42ForYou/RFS that referenced this pull request Jan 29, 2024
현재 dispatcher를 추적하는 Object currentDispatcher를 추가하였습니다.

이후 dispatcher는 mount/update로 구분하여 개발예정입니다.
mount/update logic 을 구분하여 개발함으로써 초기 rendering 속도를 높이기
위함입니다. 자세한 내용은 아래 react pull request를 참고해주세요

facebook/react#14701
JinmuGo added a commit to 42ForYou/RFS that referenced this pull request Feb 15, 2024
현재 dispatcher를 추적하는 Object currentDispatcher를 추가하였습니다.

이후 dispatcher는 mount/update로 구분하여 개발예정입니다.
mount/update logic 을 구분하여 개발함으로써 초기 rendering 속도를 높이기
위함입니다. 자세한 내용은 아래 react pull request를 참고해주세요

facebook/react#14701
JinmuGo added a commit to 42ForYou/RFS that referenced this pull request Feb 29, 2024
현재 dispatcher를 추적하는 Object currentDispatcher를 추가하였습니다.

이후 dispatcher는 mount/update로 구분하여 개발예정입니다.
mount/update logic 을 구분하여 개발함으로써 초기 rendering 속도를 높이기
위함입니다. 자세한 내용은 아래 react pull request를 참고해주세요

facebook/react#14701
JinmuGo added a commit to 42ForYou/RFS that referenced this pull request Feb 29, 2024
현재 dispatcher를 추적하는 Object currentDispatcher를 추가하였습니다.

이후 dispatcher는 mount/update로 구분하여 개발예정입니다.
mount/update logic 을 구분하여 개발함으로써 초기 rendering 속도를 높이기
위함입니다. 자세한 내용은 아래 react pull request를 참고해주세요

facebook/react#14701
JinmuGo added a commit to 42ForYou/RFS that referenced this pull request Feb 29, 2024
현재 dispatcher를 추적하는 Object currentDispatcher를 추가하였습니다.

이후 dispatcher는 mount/update로 구분하여 개발예정입니다.
mount/update logic 을 구분하여 개발함으로써 초기 rendering 속도를 높이기
위함입니다. 자세한 내용은 아래 react pull request를 참고해주세요

facebook/react#14701
JinmuGo added a commit to 42ForYou/RFS that referenced this pull request Mar 1, 2024
* FY-64/chore: add currentDispatcher

현재 dispatcher를 추적하는 Object currentDispatcher를 추가하였습니다.

이후 dispatcher는 mount/update로 구분하여 개발예정입니다.
mount/update logic 을 구분하여 개발함으로써 초기 rendering 속도를 높이기
위함입니다. 자세한 내용은 아래 react pull request를 참고해주세요

facebook/react#14701

* FY-64/chore(hook): add hookCore properties

hook을 구현하기 위한 중요한 property들을 정의하였습니다.

Refered

https://github.com/facebook/react/blob/main/packages/react-reconciler/src/ReactFiberHooks.js

* FY-64/refactor: folder structure

hooks 내의 폴더 structure를 세웠습니다.
index.js, constnats.js 가 최상단에 존재하며, 각각 훅의 구현은 폴더 내에
존재하게 됩니다.

ex)
MountuseState.js
updateUseState.js
파일은 useEffect내에 존재하게 됨.

* FY-64/chore: modify constants

type을 정의하기 위해 있었던 객체 defaultHook 과 effectValue를 types.js로
옮겼습니다.

* FY-64/chore(workInProgressHook): add workInProgressHook function

hook에서 현재 render중인 hook의 객체를 얻고 전역 객체의 상태를 업데이트
하기 위한 함수

mountWorkInProgressHook과
updateWorkInProgressHook을 정의하였습니다.

각각 mountHook, updateHook에서 현재 hook의 객체를 얻는데 사용될
예정입니다.

* FY-64/chore(dispatcher): add hookDispatcher

현재 component의 상태에 따른 dispatcher를 정의합니다. dispatcher는
이후 추가될 renderWithHooks에 의해 mount, update가 결정 됩니다.

* FY-64/chore: init hooks prototype

각 hook 의 prototype을 정의하였습니다.

- useEffect
- useReducer → useState
- useMemo → useCallback → useRef

각각 다음과 같은 dependency에 의해 구현될 예정입니다.

* fix(effectTag): reDefinition HookEffectTags

* FY-67/feature use reducer (#12)

* FY-67/docs(types): add types for useReducer

useReducer를 구현하기 위한 type인 TUpdate,TUpdateQueue를 정의하였습니다.

* FY-67/chore(objectIs): add ObjectIs

* FY-67/refactor(hookCore): move core to hookCore

기존 rfs의 core와 중복되는 점을 감안하여 hook 내부의 core file의 이름을
변경하였습니다.

* FY-67/chore(type): add missing things in types.js

* restore code

* FY-67/refactor(types): split types

types.js에 있던 여러 type들을 나누어 별개의 파일로 관리하였습니다.

* FY-67/build(lodash): add lodash

* FY-67/fix: a typo Hook -> THookObject

* FY-67/feat(WorkInProgressHook): implement functions

* FY-67/feat(useReducer): implement useReducer

* FY-67/chore: export logic define

* remove(types): main types.js file

* FY-67/refactor(constructor): types use constructor

정의 해놓은 types들을 생성하는 constructor를 만들었습니다.

* FY-67/docs: add comment

* FY-67/feat(renderWithHook): add second args for ref, context

---------

Co-authored-by: Jinmu Go <[email protected]>

* FY-64/fix: renderWithHooks

finishRenderingHook함수를 추가하였고 renderWithHooks는 컴포넌트를 새로
렌더링하는 함수이끼 때무네 WIP fiber의 hook list를 관리하는
memoizedState와 Effect 객체를 관리하는 updateQueue를 초기화합니다.

* FY-64/fix: workInProgressHook의 로직 에러 throw

해당 if문이 불리지않을 것으로 추정 현재 우리 RFS에서는 if문 안쪽,
(nextWIPHook이 null이 아닐 경우) 가 없을 것. 아직 react source를 완전히
이해하지 못할 경우를 대비 이런 경우가 나오면 Error를 던져 추후 대비예정.

* FY-137/feature use effect (#13)

* FY-137/feat(flag): add flag type for Effect Hooks

* FY-137/feat(useEffect): implement the hook

* FY-137/docs(fiber): add comments Fiber Flags

* FY-137/docs(effectInstance): add Missing Object into useEffect

* FY-137/chore(index.js): add useEffect

* FY-64/docs(hooks): add comment for pushEffect

* FY-64/docs: enqueueRenderPhaseUpdate add comment

* FY-187/feat(hook): add useRef (#19)

* feat(hooks): add useCallback (#18)

similar with useMemo

* feat(hook): add useState (#16)

hasEagerState와 그 처리과정에 주목해주세요.

* FY-179/feat(hooks): add useLayoutEffect (#15)

* FY-179/feat(hooks): add useLayoutEffectImpl

* FY-179/fix: a export and add a comment

* FY-185/feat(hooks): add useMemo (#17)

* FY-64/style: apply eslint formatting

* FY-190/hook refactoring (#20)

* FY-190/refactor(shared): add areHookDepsEqual

* FY-190/refactor(hooks): add MemoizedValueAndDeps

useMemo와 useCallback에서 사용되는 memoizedState를 생성하는
클래스입니다.

* FY-190/refactor(useState): arrange function order

* FY-190/refactor: FunctionComponentUpdateQueue

* FY-190/refactor: EffectInstance

* FY-190/refactor(shard): add enqueueRenderPhaseUpdate

* FY-190/fix: a typo

* FY-190/refactor(type): remove Object.freeze

constructor에서 해당 타입에대한 instance를 생성하기 때문에 types를
사용하지 않습니다.
그래서 불필요한 객체 동결을 삭제합니다.

* FY-193/feat(hookObject): renew to 16.12.0

* FY-193/style: small fix in prettier,eslint

* FY-193/feat(hookCore): renew to 16.12.0

* FY-193/style: apply new style rule

* FY-193/feat(hookUpdateQueue): renew 16.12.0

pending -> last

* FY-193/feat(workInProess): renew to 16.12.0

* FY-193/feat(hookUpdate): renew 16.12.0

* FY-193/feat(hookExpirationTime): add new Object for expirationTime

* FY-193/feat(hookRenderPhaseCore): add new Object for render phase update

render phase시에 update된 것들을 다루는 모듈 스코프 객체인
hookRenderPhase를정의 하였습니다.

* FY-193/fix: export statement

* FY-193/chore(hook): small fix core

* FY-193/feat(dispatcher): add ContextOnlyDispatcher

readState만 허용하는 ContextOnlyDispatcher를 추가하였습니다. readState는
이후 ContextAPI구현시 추가될 예정입니다.

* FY-193/fix: a typo add .js suffix

* FY-193/chore: add NoWork in fiberExpirationTime

* FY-193/feat(hook): back to the 16.12.0 renderWithHooks

* FY-193/feat(hook): enqueueRenderPhaseUpdate

* FY-193/feat(hook): back to the 16.12.0 useReducer & dispatchAction

* FY-193/feat(hook): renew useState

* FY-193/feat(hook): add useEffect

* FY-193/feat(hook): renew useLayoutEffect

* FY-193/remove: dummy

* FY-193/ci(scripts): add execJsFile.sh

개별 js 파일의 문법 검사를 위한 shellscript를 만들었습니다.

* FY-193/fix(type): all type and execute confirm

* FY-193/docs: update comment

* FY-193/ci(build_check): add script for confirm each file

* FY-193/docs(hook): update comments

---------

Co-authored-by: Jinmu Go <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

8 participants