Если вы посмотрите на react-native-video-controls module
,
_toggleFullscreen() {
let state = this.state;
state.isFullscreen = ! state.isFullscreen;
if (this.props.toggleResizeModeOnFullscreen) {
state.resizeMode = state.isFullscreen === true ? 'cover' : 'contain';
}
if (state.isFullscreen) {
typeof this.events.onEnterFullscreen === 'function' && this.events.onEnterFullscreen();
}
else {
typeof this.events.onExitFullscreen === 'function' && this.events.onExitFullscreen();
}
this.setState( state );
}
вы можете видеть, что он выполняет setSate
при изменении состояния экрана. Это означает, что вы снова окажетесь.
Реализации включены в такие средства визуализации, как реагирующая-нативная, реактивная-нативная.
Глядя на реализацию setState
в React.Component
, все было делегировано для работы с средством визуализации, создавшим экземпляр компонента.
// A bit simplified
setState(partialState, callback) {
// Use the 'updater' field to talk back to the renderer!
this.updater.enqueueSetState(this, partialState, callback);
};
Так определяется this.setState()
в пакете React
, но обновляется DOM
.
Прочитайте this.updater
, установленное React DOM
, разрешите ReactDOM
расписание и обработайте обновления.