Единственное реальное соглашение состоит в том, что 0
означает успех и ненулевые значения (обычно 1
) означает отказ. Для официальной ссылки на это см., Например, документы Microsoft C ++ в exit
:
Как правило, вызывающий абонент устанавливает значение
status
в 0: укажите нормальный выход или какое-либо другое значение, чтобы указать ошибку.Или документы C # на
Envrionment.Exit
иEnvironment.ExitCode
, которые по-разному заявляют:Используйте 0 (ноль), чтобы указать, что процесс завершен успешно.
и
Значение по умолчанию равно 0 (ноль), что указывает на успешное завершение процесса.
и
Используйте ненулевой номер для указания ошибки , В вашем приложении вы можете определить свои собственные коды ошибок в перечислении и вернуть соответствующий код ошибки на основе сценария. Например, верните значение 1, чтобы указать, что требуемый файл отсутствует, и значение 2, чтобы указать, что файл находится в неправильном формате. Список кодов выхода, используемых операционной системой Windows, см. В Системные коды ошибок в документации Windows.
В отличие от некоторые другие ответчики , Я настоятельно рекомендую использовать коды системных ошибок в качестве кодов выхода приложений. Некоторые примечания о кодах системной ошибки :
- Microsoft не рекомендуют использовать их в качестве кодов выхода приложений где угодно , и действительно явным образом предлагаю вам «определить свои собственные коды ошибок» в документации, которую я цитирую выше.
- Microsoft не использует их последовательно в качестве кодов выхода в своих собственные приложения или команды. Хотя некоторые примеры приложений, которые делают , используют эти коды, такие как MsiExec.exe , есть еще много чего, например
dir
,dotnet
или TAEF .- Использование их кажется мне явно плохой идеей. Есть тысяч из System Exit Codes , большинство из которых не имеют отношения к вашему конкретному приложению. Если вы попытаетесь их использовать, вы собираетесь тратить время на сбор списков, чтобы найти коды, применимые к вашему сценарию, и конечный результат будет менее полезен для разработчика, вызывающего ваше приложение, чем если бы вы только что определили небольшое число кодов выхода, которые имеют смысл для вашего конкретного приложения - сделайте это вместо этого.
Вы можете использовать ловушку жизненного цикла shouldComponentUpdate(nextProps, nextState)
. Вы пишете логику для проверки значения ваших свойств и состояния, после проверки возвращаете true для повторной визуализации компонента, в противном случае возвращаете false, чтобы запретить повторную визуализацию компонента. Подробнее о них читайте в их официальных документах .
или вы можете использовать React.PureComponent
вместо React.Component
, если вы хотите, чтобы React обрабатывал логику повторного рендеринга, сравнивая все старые и новые реквизиты и значения состояний за занавесом.
Идеальный подход - сделать дочерние компоненты чистыми компонентами . Если реквизиты дочерних компонентов не меняются, Pure Components не будут повторно отображаться.
Вы можете использовать getDerivedStateFromProps
внутри дочернего компонента, чтобы решить, следует ли обновлять каждый из них.
Вот также некоторые методы, лучшие практики и питфалы.