Реагирование обновления компонента "Собственная сила" при выходе приложения на передний план

Мое приложение отображает некоторые тексты. Мне нужно повторно сделать Component когда размер шрифта изменяется через Настройки -> Специальные возможности -> Размер шрифта:

Так что в основном это последовательность se:

  • Приложение открыто (на переднем плане).
  • Пользователь открывает настройки телефона, поэтому приложение выходит на передний план (не полностью закрытый).
  • Пользователь изменяет размер шрифта через Настройки -> Специальные возможности -> Размер шрифта.
  • Пользователь закрывает настройки и открывает приложение, снова выходит на передний план.

На данный момент мне нужно перезагрузить приложение, потому что некоторые Components должны быть адаптированы.

Я использую ответную нативную информацию об устройстве, чтобы получить размер шрифта, используя const fontScale = DeviceInfo.getFontScale(); но его значение не обновляется, пока приложение не будет полностью закрыто и открыто.

Есть идеи?

1 ответ

Решение

Вы можете установить appstate в nextAppState, Это должно вызвать рендеринг компонента.

import React, {Component} from 'react';
import {AppState, Text} from 'react-native';

class AppStateExample extends Component {
  state = {
    appState: AppState.currentState,
  };

  componentDidMount() {
    AppState.addEventListener('change', this._handleAppStateChange);
  }

  componentWillUnmount() {
    AppState.removeEventListener('change', this._handleAppStateChange);
  }

  _handleAppStateChange = (nextAppState) => {
    if (
      this.state.appState.match(/inactive|background/) &&
      nextAppState === 'active'
    ) {
      console.log('App has come to the foreground!');
    }
    this.setState({appState: nextAppState});
  };

  render() {
    return <Text>Current state is: {this.state.appState}</Text>;
  }
}
Другие вопросы по тегам