Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 反应本机:单击选项卡时重新渲染组件_Javascript_Reactjs_React Native_React Navigation - Fatal编程技术网

Javascript 反应本机:单击选项卡时重新渲染组件

Javascript 反应本机:单击选项卡时重新渲染组件,javascript,reactjs,react-native,react-navigation,Javascript,Reactjs,React Native,React Navigation,我正在使用React导航,并试图在单击选项卡时强制重新呈现组件(以及getData()函数) 我试着跟着,但运气不好 路由器 export const Tabs = TabNavigator( { Progress: { screen: ProgressStack, navigationOptions: ({ navigation }) => ({ tabBarLabel: 'Progress', tabBarIcon: ({ tintCol

我正在使用React导航,并试图在单击选项卡时强制重新呈现组件(以及
getData()
函数)

我试着跟着,但运气不好

路由器

export const Tabs = TabNavigator(
  {
  Progress: {
    screen: ProgressStack,
    navigationOptions: ({ navigation }) => ({
      tabBarLabel: 'Progress',
      tabBarIcon: ({ tintColor }) =>
      <Icon name="trending-up" size={25} color={tintColor} />
    }),
  },
export const ProgressStack = StackNavigator({
  Progress: {
    screen: ProgressScreen,
    navigationOptions: ({ navigation }) => ({
      title: 'Progress',
    }),
  },
});

我没有尝试过,但我认为这可能是正确的方法:

使用该高阶组件传递一个
isfocusedtop
,然后使用
componentdiddupdate
调用
getData

componentDidUpdate (previousProps) {
  if (!previousProps.isFocused && this.props.isFocused) {
    this.getData()
  }
}

您还可以使用onPress按钮事件:,但这需要一种方法来触发您正在进行的数据调用。如果您使用的是redux,则需要通过route参数传递dispatch或绑定操作函数。

您好,谢谢您的回复。我是否需要使用此解决方案对我的
路由器
进行任何修改,还是只需加入您包含的生命周期方法?(不幸的是,我目前没有使用Redux)。不需要更改路由器。导出进度的位置:
使用导航焦点导出默认值(进度)
。然后检查我上面描述的道具。这不依赖于redux工作:)
componentDidUpdate (previousProps) {
  if (!previousProps.isFocused && this.props.isFocused) {
    this.getData()
  }
}