Почему пауза сбрасывается после включения полноэкранного режима? - PullRequest
0 голосов
/ 10 июля 2019

Я пытаюсь добавить видеоплеер, я использую react-native-video-controls, чтобы добавить элементы управления на мое видео, но у него проблема с сбросом паузы

enter image description here

Код:

handleExitFullScreen = () => {
    this.setState({
        fullScreen : false
    });
}

handleEnterFullscreen = () => {
    this.setState({
        fullScreen : true
    });
}
<VideoPlayer
          source            = {{ uri: link }}
          disableVolume
          disableBack
          onEnterFullscreen = {this.handleEnterFullscreen}
          onExitFullscreen  = {this.handleExitFullScreen}
          toggleResizeModeOnFullscreen = {false}
/>

1 Ответ

1 голос
/ 10 июля 2019

Если вы посмотрите на 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 расписание и обработайте обновления.

...