Получение 0 вместо #ffffff из удаленной конфигурации Firebase при первом запуске -React-native- - PullRequest
1 голос
/ 24 января 2020

Я использую Firebase Remote Config для установки цвета иконки. При первой загрузке приложения значение, загружаемое из firebase, равно 0, если после перезагрузки приложения я получаю правильное значение цвета #ffffff. Вы можете видеть результат в консоли XCode на этом снимке экрана:

enter image description here

Вот мой конфигурационный файл remoteConfig:

async getRemoteConfig(t) {
    // const { t, i18n } = useTranslation();
    if (__DEV__) {
      firebase.config().enableDeveloperMode();
      console.log('running in dev mode');
    }

    // Set default values
    firebase.config().setDefaults({
      share_button_color:'#fff'
    });

    firebase
      .config() 
      .fetch(0) // call like this fetch(0) to reset cache load new params from firebase,without this it takes 12h
      .then(() => {
        return firebase.config().activateFetched();
      })
      .then(async activated => {
        if (!activated) console.log('Fetched data not activated');
        else console.log('Fetched data activated');
      })
      //   .then(snapshot => {
      //     const hasExperimentalFeature = snapshot.val();

      //     if (hasExperimentalFeature) {
      //       enableSuperCoolFeature();
      //     }

      //     // continue booting app
      //   })
      .catch(console.error);
  },
};

Также вот мой компонент:


export default class ShareIcon extends Component {
  constructor(props) {
    super(props);
    this.state = {
      buttonColor: 'white',
    };
  }

  async componentDidMount() {
    await this.getShareButtonColor();
  }

  async getShareButtonColor() {
    const remoteButtonColorData = await firebase
      .config()
      .getValue('share_button_color');
    const buttonColor = remoteButtonColorData.val();
    console.log('buttonColor',buttonColor) // <===this is the console.log we see 
    this.setState({buttonColor});          // in screenshot
  }

  render() {
    return (
      <TouchableOpacity
        hitSlop={{top: 10, left: 10, bottom: 10, right: 10}}
        style={styles.container}
        onPress={() => shareApp()}
        style={{marginLeft: 20}}>
        <Icon name="share-2" type="feather" color={this.state.buttonColor} />
      </TouchableOpacity>
    );
  }
}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...