Как отложить SplashScreen Redux Persist Gate?

Я использую Redux и Redux-Persist для сохранения некоторых пользовательских данных при закрытии приложения.

Существует опция загрузки, которую вы настраиваете в PersistGate, где вы можете указать экран загрузки, который будет отображаться, пока Redux-Persist собирает сохраненные данные.

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

Есть ли форма для отсрочки перехода экрана загрузки? Вот мой код, точка входа в приложение:

class App extends Component {    

  render() {
    return (
      <Provider store = {store}>
        <PersistGate loading = { <SplashScreen />} persistor = {persistor}>
          <Routes />
        </PersistGate>
      </Provider>
    );
  }
}
Умерло ли Create-React-App?
Умерло ли Create-React-App?
В этом документальном фильме React.dev мы исследуем, мертв ли Create React App (CRA) и какое будущее ждет этот популярный фреймворк React.
Освоение React Native: Пошаговое руководство для начинающих
Освоение React Native: Пошаговое руководство для начинающих
React Native - это популярный фреймворк с открытым исходным кодом, используемый для разработки мобильных приложений. Он был разработан компанией...
В чем разница между react native и react ?
В чем разница между react native и react ?
React и React Native - два популярных фреймворка для создания пользовательских интерфейсов, но они предназначены для разных платформ. React - это...
От React к React Native: Руководство для начинающих по разработке мобильных приложений с использованием React
От React к React Native: Руководство для начинающих по разработке мобильных приложений с использованием React
Если вы уже умеете работать с React, создание мобильных приложений для iOS и Android - это новое приключение, в котором вы сможете применить свои...
Хуки React: что это такое и как их использовать
Хуки React: что это такое и как их использовать
Хуки React - это мощная функция библиотеки React, которая позволяет разработчикам использовать состояние и другие возможности React без написания...
2
0
1 325
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

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

class App extends Component {    

  state = {
    gateLifted: false
  }
  
  onBeforeLift = () => {
    // Take an action before the gate lifts
    setTimeout(() => { 
      this.setState({ gateLifted: true}) 
    }, 3000);
  }

  render() {
    return (
      <Provider store = {store}>
        <PersistGate persistor = {persistor} onBeforeLift = {this.onBeforeLift}>
          { this.state.gateLifted ? <Routes /> : <SplashScreen />}
        </PersistGate>
      </Provider>
    );
  }
}

Спасибо, я попробую

Quim Baget 29.10.2018 10:00

Для всех, кто хочет это сделать, вы можете использовать это:

class App extends Component {    
  render() {
    return (
      <Provider store = {store}>
        <PersistGate
          loading = {<SplashScreen />}
          persistor = {persistor}
          onBeforeLift = {() => new Promise(resolve => setTimeout(resolve, 3000))}
        >
          <Routes />
        </PersistGate>
      </Provider>
    );
  }
}

Спасибо за этот фрагмент кода, который может предоставить некоторую немедленную помощь. правильное объяснение значительно улучшит его долгосрочную ценность, показывая, почему это хорошее решение проблемы, и сделает его более полезным для будущих читателей с другими, похожими вопросами. Пожалуйста, редактировать свой ответ, чтобы добавить некоторые пояснения, включая сделанные предположения.

Ardent Coder 18.05.2020 14:22

Другие вопросы по теме