dillon1000/react
Commit
Browse files Validate propTypes for lazy() and memo() and warn about invalid patterns (#14298)
* Add a test for current defaultProps behavior in lazy * Add a warning against definining defaultProps on the outer wrapper * Warn about setting propTypes too * Remove redundant async * Validate propTypes for resolved lazy types Note this only works for elements created after resolving. So it's not ideal. But it provides the best stack trace for those cases. * Add a test for lazy(forwardRef()) propTypes check * Validate memo() inner propTypes and warn about shadowing * Add test verifying nested lazy is unsupported * Change error wording to remove "Promise elements" * Improve error message for nested lazy() and add tests * Validate propTypes for memo in the reconciler when necessary * Add comments for why we're calling checkPropTypes * Fix Flow and lint * Undo unintentional formatting changes * Remove unnecessary case (it is handled by function code path) * Add test coverage for memo(fn.defaultProps).propTypes * Test should be agnostic of where resolving happens That's an implementation detail and we might want to change it later. Let's keep it easy by making tests just check that validation happened, not at which stage. * Unify traversal logic in createElement This moves all type traversal into createElement. When lazy resolves, we call createElement once to re-check. * Match prod behavior for propTypes/defaultProps shims closer * Revert "Unify traversal logic in createElement" This reverts commit 2e77ca47fe80ebe6595333542a8c5c138c68643f. See https://github.com/facebook/react/pull/14298#issuecomment-442687775 * Undo unnecessary change to getComponentName
Changed paths5 files
First-parent comparisonpackages/react-reconciler/src/ReactFiberBeginWork.js ModifiedM packages/react-reconciler/src/__tests__/ReactLazy-test.internal.js ModifiedM packages/react-reconciler/src/__tests__/ReactMemo-test.internal.js ModifiedM packages/react/src/ReactElementValidator.js ModifiedM packages/react/src/ReactLazy.js ModifiedPatch
Files changed
Rendering syntax-highlighted changes…