MCPcopy Index your code
hub / github.com/react/react / commitClassSnapshot

Function commitClassSnapshot

packages/react-reconciler/src/ReactFiberCommitEffects.js:634–706  ·  view source on GitHub ↗
(finishedWork: Fiber, current: Fiber)

Source from the content-addressed store, hash-verified

632}
633
634export function commitClassSnapshot(finishedWork: Fiber, current: Fiber) {
635 const prevProps = current.memoizedProps;
636 const prevState = current.memoizedState;
637 const instance = finishedWork.stateNode;
638 // We could update instance props and state here,
639 // but instead we rely on them being set during last render.
640 // TODO: revisit this when we implement resuming.
641 if (__DEV__) {
642 if (
643 !finishedWork.type.defaultProps &&
644 !('ref' in finishedWork.memoizedProps) &&
645 !didWarnAboutReassigningProps
646 ) {
647 if (instance.props !== finishedWork.memoizedProps) {
648 console.error(
649 'Expected %s props to match memoized props before ' +
650 'getSnapshotBeforeUpdate. ' +
651 'This might either be because of a bug in React, or because ' +
652 'a component reassigns its own `this.props`. ' +
653 'Please file an issue.',
654 getComponentNameFromFiber(finishedWork) || 'instance',
655 );
656 }
657 if (instance.state !== finishedWork.memoizedState) {
658 console.error(
659 'Expected %s state to match memoized state before ' +
660 'getSnapshotBeforeUpdate. ' +
661 'This might either be because of a bug in React, or because ' +
662 'a component reassigns its own `this.state`. ' +
663 'Please file an issue.',
664 getComponentNameFromFiber(finishedWork) || 'instance',
665 );
666 }
667 }
668 }
669 try {
670 const resolvedPrevProps = resolveClassComponentProps(
671 finishedWork.type,
672 prevProps,
673 );
674 let snapshot;
675 if (__DEV__) {
676 snapshot = runWithFiberInDEV(
677 finishedWork,
678 callGetSnapshotBeforeUpdates,
679 instance,
680 resolvedPrevProps,
681 prevState,
682 );
683 const didWarnSet =
684 ((didWarnAboutUndefinedSnapshotBeforeUpdate: any): Set<mixed>);
685 if (snapshot === undefined && !didWarnSet.has(finishedWork.type)) {
686 didWarnSet.add(finishedWork.type);
687 runWithFiberInDEV(finishedWork, () => {
688 console.error(
689 '%s.getSnapshotBeforeUpdate(): A snapshot value (or null) ' +
690 'must be returned. You have returned undefined.',
691 getComponentNameFromFiber(finishedWork),

Callers 1

Calls 8

runWithFiberInDEVFunction · 0.90
captureCommitPhaseErrorFunction · 0.90
addMethod · 0.80
errorMethod · 0.65
hasMethod · 0.65

Tested by

no test coverage detected