реагировать нативно как сделать рендер обновления экрана на tabBarOnPress - PullRequest
1 голос
/ 07 апреля 2019

экран не получает новые данные, пока я не закрою приложение и не открою его снова

Я хочу перерисовать экран на вкладке, нажмите, чтобы обновить экран и получить новые данные

Пожалуйста, смотрите мой код ниже

const DashboardTabNavigator = createBottomTabNavigator({

    Home: { screen: Home,
        navigationOptions: {
            tabBarIcon: (
                <Image style={{ width: 30, height: 30,tintColor:'white' }}
                       source={require('./assets/IconBootomTabNavigation/home_icon.png')} />
            )
        }
    },
    Category: { screen: Category,
        navigationOptions: {


            tabBarIcon: (
                <Image style={{ width: 30, height: 30,tintColor:'white' }}
                       source={require('./assets/IconBootomTabNavigation/cat_icon.png')} />
            )
        }
    }

1 Ответ

1 голос
/ 07 апреля 2019

Я рекомендую поместить код, отвечающий за выборку данных, в метод * жизненного цикла componentDidMount.Таким образом, вы можете быть уверены, что получите данные после первоначального рендеринга.

Если экраны не перерисовываются, проверьте эту тему.Вы можете использовать tabBarOnPress prop для вызова любого метода компонента.

Вы также можете попробовать это решение:

static navigationOptions = ({navigation}) => {
  return {
    tabBarOnPress: (tab, jumpToIndex) => {
      if(!tab.focused) {
        jumpToIndex(tab.index);
        navigation.state.params.onFocus()
      }
    },
  }
}

componentDidMount() {
  this.props.navigation.setParams({
    onFocus: your-data-fetching-method
  })
}
...