Как заставить реагировать, чтобы не вернуть детей, просто получить изменение состояния?

Единственное реальное соглашение состоит в том, что 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 , большинство из которых не имеют отношения к вашему конкретному приложению. Если вы попытаетесь их использовать, вы собираетесь тратить время на сбор списков, чтобы найти коды, применимые к вашему сценарию, и конечный результат будет менее полезен для разработчика, вызывающего ваше приложение, чем если бы вы только что определили небольшое число кодов выхода, которые имеют смысл для вашего конкретного приложения - сделайте это вместо этого.

1
задан Gergő Horváth 16 January 2019 в 16:36
поделиться

3 ответа

Вы можете использовать ловушку жизненного цикла shouldComponentUpdate(nextProps, nextState). Вы пишете логику для проверки значения ваших свойств и состояния, после проверки возвращаете true для повторной визуализации компонента, в противном случае возвращаете false, чтобы запретить повторную визуализацию компонента. Подробнее о них читайте в их официальных документах .

или вы можете использовать React.PureComponent вместо React.Component, если вы хотите, чтобы React обрабатывал логику повторного рендеринга, сравнивая все старые и новые реквизиты и значения состояний за занавесом.

0
ответ дан Danyal Imran 16 January 2019 в 16:36
поделиться

Идеальный подход - сделать дочерние компоненты чистыми компонентами . Если реквизиты дочерних компонентов не меняются, Pure Components не будут повторно отображаться.

0
ответ дан enkrates 16 January 2019 в 16:36
поделиться

Вы можете использовать getDerivedStateFromProps

внутри дочернего компонента, чтобы решить, следует ли обновлять каждый из них.

Вот также некоторые методы, лучшие практики и питфалы.

0
ответ дан Vadim Aidlin 16 January 2019 в 16:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: