@samitouri / QOS-React-2 / commits / a398cbd5a7

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