reactjs - 反应原生如何在 tabBarOnPress 上重新渲染刷新屏幕
问题描述
在我关闭应用程序并再次打开之前,屏幕不会获取新数据
我想在选项卡上重新渲染屏幕以刷新屏幕并获取新数据
请看我下面的代码
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')} />
)
}
}
解决方案
我建议您将负责获取数据的代码放在componentDidMount
生命周期方法中。这样,您可以确保在初始渲染后获得数据。
如果屏幕没有被重新渲染,请检查这个线程。您可以使用tabBarOnPress 属性调用任何组件方法。
你也可以试试这个解决方案:
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
})
}
推荐阅读
- javascript - 单击外部时如何隐藏输入?
- r - 类似于 Excel 中的 AVERAGEIFS 的条件平均值
- ios - 如何从本地文件(角度)在nativescript中插入图像
- python - 使用python存档中包含的信息重命名zipfile
- java - 添加 JFreeChart 和 JCommon 库后无法访问类型 org.jfree.chart.JFreeChart
- r - 更改 R 的版本是否也需要更改 Rstudio 版本?
- docker - 将standalone.xml 添加到JBoss WildFly Docker 容器
- swift - 在第一个 viewController 中按下 UItableView 滚动时,如何使用 NSPredicate 获取请求并用数据填充第二个 viewController
- r - 缺少上限时仍绘制 CI 的下限
- angular - AOt 编译没有这样的文件或目录