android - 当用户打开抽屉时调用函数(onClick 按钮或幻灯片)
问题描述
我已经创建了一个带有 react-navigation 的抽屉系统(不使用 DrawerLayoutAndroid),我用一个按钮打开它或滑动它我想要的是当用户打开抽屉时调用函数并且我的函数将更改 UI 抽屉中的某些内容,它会检查是否有新消息设置新消息通知图标!这是抽屉导航代码:
const DrawerNavigation = createDrawerNavigator({
Home: {
screen: HomeStackNavigation,
},
Login: {
screen: Login,
navigationOptions: {
header: null,
}
},
},
{
drawerWidth: width*0.83,
contentComponent: props =>
{
return(<DrawerComponent {...props}/>)
},
drawerPosition: 'left',
},
);
export default createAppContainer(DrawerNavigation)
和抽屉布局代码它只是一个带有项目的滚动视图..
这是在主屏幕中打开和关闭抽屉的按钮代码:
toggleButtonDrawer = () => {
this.props.navigation.openDrawer();
}
我在这里称它为:
<View style={Styles.buttonMunuContainer}>
<TouchableOpacity style={Styles.buttonMunu} onPress= {this.toggleButtonDrawer}>
<IconAD name="menu-fold" size={ hp('4%')} color='white'/>
</TouchableOpacity>
</View>
PS。如果您知道我不使用 redux 时收到新消息时设置通知图标 (+1) 的另一种解决方案
PS。我只在安卓上工作
解决方案
在您的自定义抽屉组件<DrawerComponent />
中,您可以使用componentDidUpdate
来检测抽屉何时打开。
componentDidUpdate(prevProps) {
if (!prevProps.navigation.state.isDrawerOpen && this.props.navigation.state.isDrawerOpen) {
console.log('The drawer has been opened!')
}
}
所以你要做的就是在这个时候获取你的消息并与组件的当前状态进行比较,以检查是否有任何新的通知要显示。
推荐阅读
- python - 通过 Python 运行 Excel 宏(使用 Mac)?
- javascript - 倒计时完成后如何移动窗口?
- amazon-web-services - Creating Cognito users from frontend application
- python - 读取 .h264 文件
- telegram - 到私人电报频道的 HTTP 发布消息不起作用
- excel - 如何有条件地检查excel中两个日期之间的小时差
- telegram - 如何收集电报消息流
- java - 如何将 mm/dd/yy 字符串转换为“Monday 7th Jan”
- ffmpeg - 在流中找不到编解码器 subrip 的标记,容器中当前不支持编解码器
- devops - 带有 AWS QuickSight 的 AWS Aurora Serverless (MySQL)