Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
 
 
 
 

45 строки
1.3 KiB

  1. import verifyPlainObject from '../utils/verifyPlainObject'
  2. export function defaultMergeProps(stateProps, dispatchProps, ownProps) {
  3. return { ...ownProps, ...stateProps, ...dispatchProps }
  4. }
  5. export function wrapMergePropsFunc(mergeProps) {
  6. return function initMergePropsProxy(
  7. dispatch,
  8. { displayName, pure, areMergedPropsEqual }
  9. ) {
  10. let hasRunOnce = false
  11. let mergedProps
  12. return function mergePropsProxy(stateProps, dispatchProps, ownProps) {
  13. const nextMergedProps = mergeProps(stateProps, dispatchProps, ownProps)
  14. if (hasRunOnce) {
  15. if (!pure || !areMergedPropsEqual(nextMergedProps, mergedProps))
  16. mergedProps = nextMergedProps
  17. } else {
  18. hasRunOnce = true
  19. mergedProps = nextMergedProps
  20. if (process.env.NODE_ENV !== 'production')
  21. verifyPlainObject(mergedProps, displayName, 'mergeProps')
  22. }
  23. return mergedProps
  24. }
  25. }
  26. }
  27. export function whenMergePropsIsFunction(mergeProps) {
  28. return typeof mergeProps === 'function'
  29. ? wrapMergePropsFunc(mergeProps)
  30. : undefined
  31. }
  32. export function whenMergePropsIsOmitted(mergeProps) {
  33. return !mergeProps ? () => defaultMergeProps : undefined
  34. }
  35. export default [whenMergePropsIsFunction, whenMergePropsIsOmitted]