(finishedWork)
| 23037 | } |
| 23038 | |
| 23039 | function commitBeforeMutationEffectsOnFiber(finishedWork) { |
| 23040 | var current = finishedWork.alternate; |
| 23041 | var flags = finishedWork.flags; |
| 23042 | |
| 23043 | if ((flags & Snapshot) !== NoFlags) { |
| 23044 | setCurrentFiber(finishedWork); |
| 23045 | |
| 23046 | switch (finishedWork.tag) { |
| 23047 | case FunctionComponent: |
| 23048 | case ForwardRef: |
| 23049 | case SimpleMemoComponent: |
| 23050 | { |
| 23051 | break; |
| 23052 | } |
| 23053 | |
| 23054 | case ClassComponent: |
| 23055 | { |
| 23056 | if (current !== null) { |
| 23057 | var prevProps = current.memoizedProps; |
| 23058 | var prevState = current.memoizedState; |
| 23059 | var instance = finishedWork.stateNode; // We could update instance props and state here, |
| 23060 | // but instead we rely on them being set during last render. |
| 23061 | // TODO: revisit this when we implement resuming. |
| 23062 | |
| 23063 | { |
| 23064 | if (finishedWork.type === finishedWork.elementType && !didWarnAboutReassigningProps) { |
| 23065 | if (instance.props !== finishedWork.memoizedProps) { |
| 23066 | error('Expected %s props to match memoized props before ' + 'getSnapshotBeforeUpdate. ' + 'This might either be because of a bug in React, or because ' + 'a component reassigns its own `this.props`. ' + 'Please file an issue.', getComponentNameFromFiber(finishedWork) || 'instance'); |
| 23067 | } |
| 23068 | |
| 23069 | if (instance.state !== finishedWork.memoizedState) { |
| 23070 | error('Expected %s state to match memoized state before ' + 'getSnapshotBeforeUpdate. ' + 'This might either be because of a bug in React, or because ' + 'a component reassigns its own `this.state`. ' + 'Please file an issue.', getComponentNameFromFiber(finishedWork) || 'instance'); |
| 23071 | } |
| 23072 | } |
| 23073 | } |
| 23074 | |
| 23075 | var snapshot = instance.getSnapshotBeforeUpdate(finishedWork.elementType === finishedWork.type ? prevProps : resolveDefaultProps(finishedWork.type, prevProps), prevState); |
| 23076 | |
| 23077 | { |
| 23078 | var didWarnSet = didWarnAboutUndefinedSnapshotBeforeUpdate; |
| 23079 | |
| 23080 | if (snapshot === undefined && !didWarnSet.has(finishedWork.type)) { |
| 23081 | didWarnSet.add(finishedWork.type); |
| 23082 | |
| 23083 | error('%s.getSnapshotBeforeUpdate(): A snapshot value (or null) ' + 'must be returned. You have returned undefined.', getComponentNameFromFiber(finishedWork)); |
| 23084 | } |
| 23085 | } |
| 23086 | |
| 23087 | instance.__reactInternalSnapshotBeforeUpdate = snapshot; |
| 23088 | } |
| 23089 | |
| 23090 | break; |
| 23091 | } |
| 23092 | |
| 23093 | case HostRoot: |
| 23094 | { |
| 23095 | { |
| 23096 | var root = finishedWork.stateNode; |
no test coverage detected
searching dependent graphs…