Один из недостатков использования componentDidUpdate
или componentDidMount
заключается в том, что они фактически выполняются до того, как будут выполнены элементы dom, но после того, как они были переданы из React в DOM браузера.
Скажите, например, если вам нужно установить node.scrollHeight на обработанный node.scrollTop, то элементы DOM React могут быть недостаточными.
Решение:
Используйте requestAnimationFrame
, чтобы убедиться, что ваш код запущен после рисования вашего вновь созданного объект
scrollElement: function() {
//store a this ref, and
var _this = this;
//wait for a paint to do scrolly stuff
window.requestAnimationFrame(function() {
var node = _this.getDOMNode();
if (node !== undefined) {
//and scroll them!
node.scrollTop = node.scrollHeight;
}
});
},
componentDidMount: function() {
this.scrollElement();
},
// and or
componentDidUpdate: function() {
this.scrollElement();
},
// and or
render: function() {
this.scrollElement()
return [...]
Необходимость восстановления после истечения срока действия профиля обеспечения зависит от того, как вы распространяете свои приложения.
Если вы следуете передовым методам и используете MDM для распространения своих приложений, вы можете распространять новый профиль обеспечения по истечении срока действия старого.
Если вы используете какой-либо другой метод распространения (например, простой веб-сервер), вам нужно будет перестроить свои приложения после истечения срока действия профиля обеспечения.
Независимо от способа распространения вам необходимо создать новую версию и обновить установленные приложения по истечении срока действия сертификата распространения.
Если срок действия сертификата распространения истекает, приложение перестает работать, даже если профиль обеспечения все еще действителен.
Необходимо обновить приложение новой версией, подписанной новым сертификатом распространения, до истечения срока действия старого.
Этот сеанс WWDC имеет хорошее объяснение этого процесса.