purity¶
Проверяет, что компоненты и хуки чистые, по тому, что они не вызывают заведомо нечистые функции.
Подробности правила¶
Компоненты React должны быть чистыми функциями: при одних и тех же пропсах они всегда должны возвращать один и тот же JSX. Если во время рендера компонент вызывает функции вроде Math.random() или Date.now(), на каждом рендере получается разный результат. Это ломает допущения React и приводит к ошибкам: несовпадениям при гидратации, неверной мемоизации и непредсказуемому поведению.
Типичные нарушения¶
В общем случае это правило нарушает любой API, который при одних и тех же входных данных возвращает разное значение. Обычные примеры:
Math.random()Date.now()/new Date()crypto.randomUUID()performance.now()
Неверно¶
Примеры неверного кода для этого правила:
1 2 3 4 5 6 7 8 9 10 11 | |
Верно¶
Примеры верного кода для этого правила:
1 2 3 4 5 | |
Устранение неполадок¶
Нужно показать текущее время¶
Вызов Date.now() во время рендера делает компонент нечистым:
1 2 3 4 | |
Вместо этого вынесите нечистую функцию за пределы рендера:
1 2 3 4 5 6 7 8 9 10 11 12 13 | |
Источник — https://react.dev/reference/eslint-plugin-react-hooks/lints/purity