mirror of
https://github.com/facebook/react.git
synced 2025-11-01 09:12:30 +00:00
4e2ef92779
This is a Meta-ism, but adding it for now to unblock. We special-case the `<fbt>` element for translation purposes, and have a transform that requires the children of this element to be a limited subset of nodes. Notably, any dynamic translation values must appear as `<fbt:param>` children — we disallow identifiers as children of `<fbt>` nodes. This PR adds a new pass which finds `<fbt>` nodes and ensures their immediate operands are not independently memoized. Note that this still allows the values of `<fbt:param>` to be independently memoized, as demonstrated in the unit test.
test262
@ 83a46bfe0e
React Forget
React Forget is an experimental Babel plugin to automatically memoize React Hooks and Components.
Development
# tsc --watch
$ yarn dev
# in another terminal window
$ yarn test --watch
Notes
An overview of the implementation can be found in the Architecture Overview.
This transform
- needs plugin-syntax-jsx as a dependency to inherit the syntax from.
- should be run before plugin-transform-react-jsx
- assume the enforcement of rules of hooks, i.e.
- only call hooks from React functions
- only call hooks at the top level
- https://www.npmjs.com/package/eslint-plugin-react-hooks
Scaffolding
- https://github.com/facebook/flow/tree/master/packages/babel-plugin-transform-flow-enums
- https://github.com/babel/babel/blob/main/packages/babel-plugin-transform-react-jsx/src/create-plugin.ts
Reference