Flare: update invalid accessor warnings + add no-ops (#15693)
Dominic Gannaway committed
May 21, 2019 at 14:12 UTC
a398cbd5a769332f0fa24e7fa3d30c909b1d8499
2 files changed
+56
-35
packages/react-dom/src/events/DOMEventResponderSystem.js
+38
-23
@@ -114,39 +114,54 @@ const eventResponderContext: ReactResponderContext = {
114
'context.dispatchEvent: "target", "timeStamp", and "type" fields on event object are required.',
115
);
116
}
117
- if (__DEV__) {
118
- const showWarning = name => {
117
+ const showWarning = name => {
118
+ if (__DEV__) {
119
warning(
120
false,
121
- '%s is not available on event objects created from event responder modules (React Flare).',
121
+ '%s is not available on event objects created from event responder modules (React Flare). ' +
122
+ 'Try wrapping in a conditional, i.e. `if (event.type !== "press") { event.%s }`',
123
+ name,
124
name,
125
);
124
- };
125
- possibleEventObject.preventDefault = () => {
126
+ }
127
+ };
128
+ possibleEventObject.preventDefault = () => {
129
+ if (__DEV__) {
130
showWarning('preventDefault()');
127
- };
128
- possibleEventObject.stopPropagation = () => {
131
+ }
132
+ };
133
+ possibleEventObject.stopPropagation = () => {
134
+ if (__DEV__) {
135
showWarning('stopPropagation()');
130
- };
131
- possibleEventObject.isDefaultPrevented = () => {
136
+ }
137
+ };
138
+ possibleEventObject.isDefaultPrevented = () => {
139
+ if (__DEV__) {
140
showWarning('isDefaultPrevented()');
133
- };
134
- possibleEventObject.isPropagationStopped = () => {
141
+ }
142
+ };
143
+ possibleEventObject.isPropagationStopped = () => {
144
+ if (__DEV__) {
145
showWarning('isPropagationStopped()');
136
- };
137
- // $FlowFixMe: we don't need value, Flow thinks we do
138
- Object.defineProperty(possibleEventObject, 'nativeEvent', {
139
- get() {
146
+ }
147
+ };
148
+ // $FlowFixMe: we don't need value, Flow thinks we do
149
+ Object.defineProperty(possibleEventObject, 'nativeEvent', {
150
+ get() {
151
+ if (__DEV__) {
152
showWarning('nativeEvent');
141
- },
142
- });
143
- // $FlowFixMe: we don't need value, Flow thinks we do
144
- Object.defineProperty(possibleEventObject, 'defaultPrevented', {
145
- get() {
153
+ }
154
+ },
155
+ });
156
+ // $FlowFixMe: we don't need value, Flow thinks we do
157
+ Object.defineProperty(possibleEventObject, 'defaultPrevented', {
158
+ get() {
159
+ if (__DEV__) {
160
showWarning('defaultPrevented');
147
- },
148
- });
149
- }
161
+ }
162
+ },
163
+ });
164
+
165
const eventObject = ((possibleEventObject: any): $Shape<
166
PartialEventObject,
167
>);
packages/react-dom/src/events/__tests__/DOMEventResponderSystem-test.internal.js
+18
-12
@@ -861,8 +861,9 @@ describe('DOMEventResponderSystem', () => {
861
ReactDOM.render(<Test />, container);
862
dispatchClickEvent(document.body);
863
}).toWarnDev(
864
- 'Warning: preventDefault() is not available on event objects created ' +
865
- 'from event responder modules (React Flare).',
864
+ 'Warning: preventDefault() is not available on event objects created from event responder modules ' +
865
+ '(React Flare).' +
866
+ ' Try wrapping in a conditional, i.e. `if (event.type !== "press") { event.preventDefault() }`',
867
{withoutStack: true},
868
);
869
expect(() => {
@@ -872,8 +873,9 @@ describe('DOMEventResponderSystem', () => {
873
ReactDOM.render(<Test />, container);
874
dispatchClickEvent(document.body);
875
}).toWarnDev(
875
- 'Warning: stopPropagation() is not available on event objects created ' +
876
- 'from event responder modules (React Flare).',
876
+ 'Warning: stopPropagation() is not available on event objects created from event responder modules ' +
877
+ '(React Flare).' +
878
+ ' Try wrapping in a conditional, i.e. `if (event.type !== "press") { event.stopPropagation() }`',
879
{withoutStack: true},
880
);
881
expect(() => {
@@ -883,8 +885,9 @@ describe('DOMEventResponderSystem', () => {
885
ReactDOM.render(<Test />, container);
886
dispatchClickEvent(document.body);
887
}).toWarnDev(
886
- 'Warning: isDefaultPrevented() is not available on event objects created ' +
887
- 'from event responder modules (React Flare).',
888
+ 'Warning: isDefaultPrevented() is not available on event objects created from event responder modules ' +
889
+ '(React Flare).' +
890
+ ' Try wrapping in a conditional, i.e. `if (event.type !== "press") { event.isDefaultPrevented() }`',
891
{withoutStack: true},
892
);
893
expect(() => {
@@ -894,8 +897,9 @@ describe('DOMEventResponderSystem', () => {
897
ReactDOM.render(<Test />, container);
898
dispatchClickEvent(document.body);
899
}).toWarnDev(
897
- 'Warning: isPropagationStopped() is not available on event objects created ' +
898
- 'from event responder modules (React Flare).',
900
+ 'Warning: isPropagationStopped() is not available on event objects created from event responder modules ' +
901
+ '(React Flare).' +
902
+ ' Try wrapping in a conditional, i.e. `if (event.type !== "press") { event.isPropagationStopped() }`',
903
{withoutStack: true},
904
);
905
expect(() => {
@@ -905,8 +909,9 @@ describe('DOMEventResponderSystem', () => {
909
ReactDOM.render(<Test />, container);
910
dispatchClickEvent(document.body);
911
}).toWarnDev(
908
- 'Warning: nativeEvent is not available on event objects created ' +
909
- 'from event responder modules (React Flare).',
912
+ 'Warning: nativeEvent is not available on event objects created from event responder modules ' +
913
+ '(React Flare).' +
914
+ ' Try wrapping in a conditional, i.e. `if (event.type !== "press") { event.nativeEvent }`',
915
{withoutStack: true},
916
);
917
expect(() => {
@@ -916,8 +921,9 @@ describe('DOMEventResponderSystem', () => {
921
ReactDOM.render(<Test />, container);
922
dispatchClickEvent(document.body);
923
}).toWarnDev(
919
- 'Warning: defaultPrevented is not available on event objects created ' +
920
- 'from event responder modules (React Flare).',
924
+ 'Warning: defaultPrevented is not available on event objects created from event responder modules ' +
925
+ '(React Flare).' +
926
+ ' Try wrapping in a conditional, i.e. `if (event.type !== "press") { event.defaultPrevented }`',
927
{withoutStack: true},
928
);
929