mirror of
https://github.com/facebook/react.git
synced 2025-11-01 09:12:30 +00:00
React currently suppress console logs in StrictMode during double rendering. However, this causes a lot of confusion. This PR moves the console suppression logic from React into React Devtools. Now by default, we no longer suppress console logs. Instead, we gray out the logs in console during double render. We also add a setting in React Devtools to allow developers to hide console logs during double render if they choose.
84 lines
2.2 KiB
JavaScript
84 lines
2.2 KiB
JavaScript
/**
|
|
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
*
|
|
* This source code is licensed under the MIT license found in the
|
|
* LICENSE file in the root directory of this source tree.
|
|
*
|
|
* @flow
|
|
*/
|
|
|
|
import * as React from 'react';
|
|
import {useContext} from 'react';
|
|
import {SettingsContext} from './SettingsContext';
|
|
|
|
import styles from './SettingsShared.css';
|
|
|
|
export default function DebuggingSettings(_: {||}) {
|
|
const {
|
|
appendComponentStack,
|
|
breakOnConsoleErrors,
|
|
hideConsoleLogsInStrictMode,
|
|
setAppendComponentStack,
|
|
setBreakOnConsoleErrors,
|
|
setShowInlineWarningsAndErrors,
|
|
showInlineWarningsAndErrors,
|
|
sethideConsoleLogsInStrictMode,
|
|
} = useContext(SettingsContext);
|
|
|
|
return (
|
|
<div className={styles.Settings}>
|
|
<div className={styles.Setting}>
|
|
<label>
|
|
<input
|
|
type="checkbox"
|
|
checked={appendComponentStack}
|
|
onChange={({currentTarget}) =>
|
|
setAppendComponentStack(currentTarget.checked)
|
|
}
|
|
/>{' '}
|
|
Append component stacks to console warnings and errors.
|
|
</label>
|
|
</div>
|
|
|
|
<div className={styles.Setting}>
|
|
<label>
|
|
<input
|
|
type="checkbox"
|
|
checked={showInlineWarningsAndErrors}
|
|
onChange={({currentTarget}) =>
|
|
setShowInlineWarningsAndErrors(currentTarget.checked)
|
|
}
|
|
/>{' '}
|
|
Show inline warnings and errors.
|
|
</label>
|
|
</div>
|
|
|
|
<div className={styles.Setting}>
|
|
<label>
|
|
<input
|
|
type="checkbox"
|
|
checked={breakOnConsoleErrors}
|
|
onChange={({currentTarget}) =>
|
|
setBreakOnConsoleErrors(currentTarget.checked)
|
|
}
|
|
/>{' '}
|
|
Break on warnings
|
|
</label>
|
|
</div>
|
|
|
|
<div className={styles.Setting}>
|
|
<label>
|
|
<input
|
|
type="checkbox"
|
|
checked={hideConsoleLogsInStrictMode}
|
|
onChange={({currentTarget}) =>
|
|
sethideConsoleLogsInStrictMode(currentTarget.checked)
|
|
}
|
|
/>{' '}
|
|
Hide logs during second render in Strict Mode
|
|
</label>
|
|
</div>
|
|
</div>
|
|
);
|
|
}
|