Реагирование обновления компонента «Собственная сила» при выходе приложения на передний план - PullRequest
3 голосов
/ 04 апреля 2019

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

enter image description here

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

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

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

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

Есть идеи?

1 Ответ

2 голосов
/ 04 апреля 2019

Вы можете установить 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>;
  }
}
...