react-native - ReactNative - 带有 redux 的抽屉导航器
问题描述
抽屉导航器(reactnavigation v2)是否可以不更改屏幕而是更改 redux 状态?
例子:
api = [{id: 1, name: 'Pippo'}, {id: 2, name: 'Pluto'}, {id: 3, name: 'Paperino'}]
抽屉
Menu title 1
Menu title 2
Menu title 3
屏幕
Welcome **state.name**
单击元素 1 --> actionChangeName(element_1) --> state name = 'pippo'
Screen -> Welcome Pippo
单击元素 2 --> actionChangeName(element_2) --> state name = 'pluto'
Screen -> Welcome Pluto
单击元素 3 --> actionChangeName(element_3) --> state name = 'paperino'
Screen -> Welcome Paperino
谢谢
解决方案
我解决了我的问题:
我创建了一个drawerNav,只有一个包含“Welcome **state.name**”的屏幕和一个名为DrawerMenu的contentComponent
createDrawerNavigator({ main: WelcomeScreen }, { contentComponent: DrawerMenu })
抽屉菜单(示例):
class DrawerMenu extends Component {
render() {
return (
<View style={styles.container}>
<View style={styles.titleContainer}>
<Text style={styles.title}> Drawer Menu </Text>
</View>
<ScrollView>
{this._renderList()}
</ScrollView>
</View>
);
}
_renderList = () => this.props.list.map(element => (
<TouchableOpacity key={element.id} onPress={this._updateElementSelected(element.id)}>
<Text>Menu title {element.id}</Text>
</TouchableOpacity>
);
_updateElementSelected = (elementId) => () => {
this.props.actionSetElementSelected(elementId, this.props.list);
this.props.navigation.toggleDrawer();
};
}
推荐阅读
- arrays - 如何从 ReactJS 中的 JSON 数组中获取项目?
- php - 合并 Eloquent 结果集
- r - 在 R 内部 Web 服务器中部署 Rook 应用程序
- database - 如何找出过去的待处理交易
- java - 使用 Hibernate 关系的 REST API 请求
- pyspark - 将小时、分钟和秒添加到 Spark 数据帧
- java - 用户确认输入后如何运行方法?
- json - 使用 wso2 esb 无条件过滤 json 文件
- python - 如何为 Windows 10 (Python 3.7) 安装 pyserial
- python - python“英特尔 MKL 致命错误:无法加载 libmkl_rt.so”