Je suis super nouveau pour React et j'essaie de le configurer pour Meteor et de rassembler des éléments d'autres sources. Une de ces sources a configuré la journalisation de la console pour l'application, mais je vais utiliser la méthode ES6/JSX afin que le simple fait d'utiliser leur code ne fonctionne pas pour moi (ou cela ne semble pas être le cas).
Un code que j'ai trouvé pour la journalisation est
import Logger from 'simple-console-logger';
Logger.configure({level: 'debug'});
J'ai aussi essayé d'utiliser react-logger
et react-console-logger
en vain. Voici mon code pour ce dernier, qui, à mon avis, devrait fonctionner.
import {Logger, ConsoleLogger} from 'react-console-logger';
const myLogger = new Logger();
export default class App extends Component {
render() {
myLogger.info('something witty');
}
}
Cependant, myLogger.info('...')
fait un appel à node_modules/react-console-logger/lib/Logger.js
qui l’a défini comme
Et this.logger
n'est pas défini, même si je le vois être défini ci-dessus?
Est-ce que quelqu'un sait ce que je fais mal? Il me semble que la bibliothèque a tort, mais peut-être que cela a quelque chose à voir avec l'utilisation de fichiers JSX au lieu de js?
Si vous êtes juste après l'enregistrement de la console, voici ce que je ferais:
export default class App extends Component {
componentDidMount() {
console.log('I was triggered during componentDidMount')
}
render() {
console.log('I was triggered during render')
return (
<div> I am the App component </div>
)
}
}
Ces paquets ne devraient pas être utilisés uniquement pour la journalisation de la console.
Voici quelques astuces pour la journalisation de la console:
console.table
var animals = [
{ animal: 'Horse', name: 'Henry', age: 43 },
{ animal: 'Dog', name: 'Fred', age: 13 },
{ animal: 'Cat', name: 'Frodo', age: 18 }
];
console.table(animals);
console.trace
Affiche la pile d'appels pour accéder à la console.
Vous pouvez même personnaliser vos consoles pour les faire ressortir
console.todo = function(msg) {
console.log(‘ % c % s % s % s‘, ‘color: yellow; background - color: black;’, ‘–‘, msg, ‘–‘);
}
console.important = function(msg) {
console.log(‘ % c % s % s % s’, ‘color: brown; font - weight: bold; text - decoration: underline;’, ‘–‘, msg, ‘–‘);
}
console.todo(“This is something that’ s need to be fixed”);
console.important(‘This is an important message’);
Si vous voulez vraiment passer au niveau supérieur, ne vous limitez pas à la déclaration de la console.
Voici un excellent article sur la manière d’intégrer un débogueur chrome dans votre éditeur de code!
https://hackernoon.com/debugging-react-like-a-champ-with-vscode-66281760037
const Console = prop => (
console[Object.keys(prop)[0]](...Object.values(prop))
,null
)
// Some component with JSX and a logger inside
const App = () =>
<div>
<p>imagine this is some component</p>
<Console log='foo' />
<p>imagine another component</p>
<Console warn='bar' />
</div>
// Render
ReactDOM.render(
<App />,
document.getElementById("react")
)
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.8.4/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.8.4/umd/react-dom.production.min.js"></script>
<div id="react"></div>