25 окт. 2023 г.

How to use ESLint + Prettier + VS Code together without conflicts

  1. Install eslint, prettier, eslint-plugin-prettier, eslint-config-prettier
  2. Update eslintrc file to look like this:

extends: [
  'eslint:recommended',
  'plugin:react/recommended', // if react is used
  'plugin:react-hooks/recommended', // if react is used
  'plugin:@typescript-eslint/recommended', // if ts
  'plugin:prettier/recommended'
],
plugins: ['prettier', 'react', 'react-hooks', '@typescript-eslint'],

With this setup ESLint starts to use Prettier and its rules for code style checks and autofixes.

Moreover, now you don't need two separate commands to run ESLint and Prettier, they both will run with a single command eslint --fix.

Additional steps for VS Code:

  1. Install the "Prettier - Code formatter" extension
  2. Go to Settings and set the "Editor: Default formatter" to "Prettier - Code formatter"
  3. Enable "Editor: Format On Save"

29 мар. 2022 г.

React.StrictMode calls your render() and reducer() twice

In a strict mode development build of React renders your components twice. It calls your render() method, functional components, all the hooks two times. The reducer() function from the useReducer() hook is also called twice.

Before the second call, React disables all console output methods. In case your code works in non-strict mode but shows strange results in strict mode, you may want to see console output from the second call. In order to do that you can store the original console.log method at the very beginning of your code:

import { useReducer } from "react";
// other imports...

const log = console.log;

function MyComponent() {
  const [state, dispatch] = useReducer(reducer, undefined, init);
  log("MyComponent", state); // note: log instead of console.log
  return <div>markup...</div>;
}


26 мая 2021 г.

Network Filter expressions in Chrome DevTools


KeywordExample
cookie-domain:cookie-domain:.google.com
cookie-name:
cookie-path:cookie-path:/images
cookie-value:
domain:domain:*.com domain:example.com
has-response-header:has-response-header:Access-Control-Allow-Origin
is:is:from-cache is:service-worker-intercepted
larger-than:larger-than:10k
method:method:POST
mime-type:mime-type:application/json
mixed-content:
priority:priority:Highest
resource-type:resource-type:image resource-type:other
scheme:scheme:https
set-cookie-domain:set-cookie-domain:.google.com
set-cookie-name:set-cookie-name:__utma
set-cookie-value:set-cookie-value:abc123
status-code:status-code:204
url:url:data:

To invert the rule, i.e. leave URLs that do not match, prepend it with minus sign, e.g. -is:from-cache means "all resources loaded not from cache".

Any other text leaves only URLs with that text somewhere in it (in path, query, etc.)

Examples:

  • larger-than:10k resource-type:image -domain:*.net
    "all images not from *.net larger than 10 kilobytes"
  • is:from-cache resource-type:script
    "cached scripts"