Depend on prop-types/checkPropTypes, not prop-types itself (#11420)
* Remove prop-types/checkPropTypes reimplementation * Remove renderer dependency on top-level PropTypes This annotation is unnecessary because we already warn for bad event listener types. * Record sizes
Dan Abramov committed
Nov 1, 2017 at 10:57 UTC
9d75a62d149779c8e0818a02c442490ce113aa17
3 files changed
+17
-43
packages/react-dom/src/__tests__/ReactDOMInput-test.js
+1
-1
@@ -754,7 +754,7 @@ describe('ReactDOMInput', () => {
754
);
755
expectDev(console.error.calls.count()).toBe(1);
756
expectDev(normalizeCodeLocInfo(console.error.calls.argsFor(0)[0])).toBe(
757
- 'Warning: Failed form propType: You provided a `value` prop to a form ' +
757
+ 'Warning: Failed prop type: You provided a `value` prop to a form ' +
758
'field without an `onChange` handler. This will render a read-only ' +
759
'field. If the field should be mutable use `defaultValue`. ' +
760
'Otherwise, set either `onChange` or `readOnly`.\n' +
packages/react-dom/src/shared/ReactControlledValuePropTypes.js
+2
-28
@@ -12,13 +12,8 @@ var ReactControlledValuePropTypes = {
12
};
13
14
if (__DEV__) {
15
- var warning = require('fbjs/lib/warning');
16
- var emptyFunction = require('fbjs/lib/emptyFunction');
17
- var PropTypes = require('prop-types');
15
+ var checkPropTypes = require('prop-types/checkPropTypes');
16
19
- var ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';
20
-
21
- ReactControlledValuePropTypes.checkPropTypes = emptyFunction;
17
var hasReadOnlyValue = {
18
button: true,
19
checkbox: true,
@@ -63,11 +58,8 @@ if (__DEV__) {
58
'set either `onChange` or `readOnly`.',
59
);
60
},
66
- onChange: PropTypes.func,
61
};
62
69
- var loggedTypeFailures = {};
70
-
63
/**
64
* Provide a linked `value` attribute for controlled forms. You should not use
65
* this outside of the ReactDOM controlled form components.
@@ -77,25 +69,7 @@ if (__DEV__) {
69
props,
70
getStack,
71
) {
80
- for (var propName in propTypes) {
81
- if (propTypes.hasOwnProperty(propName)) {
82
- var error = propTypes[propName](
83
- props,
84
- propName,
85
- tagName,
86
- 'prop',
87
- null,
88
- ReactPropTypesSecret,
89
- );
90
- }
91
- if (error instanceof Error && !(error.message in loggedTypeFailures)) {
92
- // Only monitor this failure once because there tends to be a lot of the
93
- // same error.
94
- loggedTypeFailures[error.message] = true;
95
-
96
- warning(false, 'Failed form propType: %s%s', error.message, getStack());
97
- }
98
- }
72
+ checkPropTypes(propTypes, props, 'prop', tagName, getStack);
73
};
74
}
75
scripts/rollup/results.json
+14
-14
@@ -25,24 +25,24 @@
25
"gzip": 6776
26
},
27
"react-dom.development.js (UMD_DEV)": {
28
- "size": 629993,
29
- "gzip": 144537
28
+ "size": 609118,
29
+ "gzip": 139930
30
},
31
"react-dom.production.min.js (UMD_PROD)": {
32
"size": 101759,
33
"gzip": 31837
34
},
35
"react-dom.development.js (NODE_DEV)": {
36
- "size": 594328,
37
- "gzip": 136213
36
+ "size": 593556,
37
+ "gzip": 135968
38
},
39
"react-dom.production.min.js (NODE_PROD)": {
40
"size": 107772,
41
"gzip": 33333
42
},
43
"ReactDOM-dev.js (FB_DEV)": {
44
- "size": 594288,
45
- "gzip": 136503
44
+ "size": 593516,
45
+ "gzip": 136258
46
},
47
"ReactDOM-prod.js (FB_PROD)": {
48
"size": 422865,
@@ -85,32 +85,32 @@
85
"gzip": 15630
86
},
87
"react-dom-server.browser.development.js (UMD_DEV)": {
88
- "size": 126953,
89
- "gzip": 32659
88
+ "size": 106084,
89
+ "gzip": 27905
90
},
91
"react-dom-server.browser.production.min.js (UMD_PROD)": {
92
"size": 15612,
93
"gzip": 6067
94
},
95
"react-dom-server.browser.development.js (NODE_DEV)": {
96
- "size": 96840,
97
- "gzip": 25434
96
+ "size": 96070,
97
+ "gzip": 25231
98
},
99
"react-dom-server.browser.production.min.js (NODE_PROD)": {
100
"size": 15340,
101
"gzip": 5985
102
},
103
"ReactDOMServer-dev.js (FB_DEV)": {
104
- "size": 96316,
105
- "gzip": 25374
104
+ "size": 95546,
105
+ "gzip": 25176
106
},
107
"ReactDOMServer-prod.js (FB_PROD)": {
108
"size": 43775,
109
"gzip": 12037
110
},
111
"react-dom-server.node.development.js (NODE_DEV)": {
112
- "size": 99113,
113
- "gzip": 25973
112
+ "size": 98343,
113
+ "gzip": 25770
114
},
115
"react-dom-server.node.production.min.js (NODE_PROD)": {
116
"size": 16264,