Заставка в приложении Create-React-App

Я использую приложение create-react-app для разработки PWA. Экран-заставка по умолчанию, предоставляемый приложением, представляет собой значок (в середине экрана) и имя приложения под этим значком. Значок и имя должны быть указаны в файле манифеста.

Вопрос: Есть ли способ настроить заставку вместо стандартной?

Ниже приведено возможное решение, но мы ищем лучший способ сделать это.

Возможное решение:

  1. Добавьте компонент для экрана-заставки.
  2. В основном компоненте выполняйте рендеринг компонента SplashScreen до тех пор, пока сервер не вернет ответ API. Я использую состояние renderSplashscreen для рендеринга компонента SplashScreen.

    // Component for Splash Screen
    class SplashScreen extends React.Component {
      render() {
        const style = {top: 0,
          bottom: 0,
          right: 0,
          left: 0,
          position: 'fixed'};
    
        return (
          <img src = {'IMAGE-URL'} style = {style}/>
        );
      }
    }
    
    class MainComponent extends React.Component {
      constructor(props) {
        this.state = {
          renderSplashscreen: true
        };
      }
    
      apiCallback(data) {
        // After getting the API response from server
        this.setState({renderSplashscreen: false});
      }
    
      render() {
        let view;
    
        if (this.state.renderSplashscreen)
          return <SplashScreen/>;
        else
          return <OtherComponent/>
      }
    }
    

Я считаю, что в настоящее время заставки PWA контролируются браузером, который вы используете. Я не видел ничего, что позволяло бы создавать свои собственные. Они просто используют те ценности, которые вы предоставляете.

Mathias 26.07.2018 15:19

@Mathias Спасибо за комментарий. Итак, приведенный выше возможное решение, кажется, пока единственный обходной путь.

Atul Khanduri 26.07.2018 16:07
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
3
2
8 063
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Вот мой собственный возможное решение, добавленный в вопрос, на данный момент это единственное решение, которое хорошо работает.

  1. Добавьте компонент для экрана-заставки.
  2. В основном компоненте выполняйте рендеринг компонента SplashScreen до тех пор, пока сервер не вернет ответ API. Я использую состояние renderSplashscreen для рендеринга компонента SplashScreen.

    // Component for Splash Screen
    class SplashScreen extends React.Component {
      render() {
        const style = {top: 0,
          bottom: 0,
          right: 0,
          left: 0,
          position: 'fixed'};
    
        return (
          <img src = {'IMAGE-URL'} style = {style}/>
        );
      }
    }
    
    class MainComponent extends React.Component {
      constructor(props) {
        this.state = {
          renderSplashscreen: true
        };
      }
    
      apiCallback(data) {
        // After getting the API response from server
        this.setState({renderSplashscreen: false});
      }
    
      render() {
        let view;
    
        if (this.state.renderSplashscreen)
          return <SplashScreen/>;
        else
          return <OtherComponent/>
      }
    }
    

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