OnPress在循环后获取最后一个项目Uid

时间:2019-06-18 22:40:37

标签: javascript react-native google-cloud-firestore

为最终项目制作移动Wine应用程序。 它有一个带有愿望清单的配置文件,我可以在其中获取所有用户的愿望清单葡萄酒。 我创建了一个弹出菜单,但是它得到了错误的Uid,并将我发送到错误的页面。

尝试过的控制台日志沿着循环运行,因此我可以了解我在何时何地获得的Uid。

这是一个循环,在该循环中,我获得了用户愿望清单(由Uid组成),然后获得了一个const来获取数据库中的所有葡萄酒。

onPress在第一个MenuItem内,并调用this.goToWine(vinhoUid, navigation),并应导航到所单击酒的页面(而不是循环中返回的最后一个酒)。

const Tinto = () => this.props.seeVisitedUser.vinhosWish.map((id) => {

            const vinho = todosVinho.find(v => v.vinhoUid === id);
            if (vinho) {
                const {nome, fotoVinho, tipoVinho, vinhoUid} = vinho;
                switch (tipoVinho) {
                    case 'Tinto':
                        return (
                            <View key={vinhoUid}>

                                <ImageBackground style={styles.wines_pic_l}
                                                 source={{uri: fotoVinho}}>
                                    <Menu
                                        ref={this.setMenuRef}
                                        button={<Text onPress={this.showMenu} style={styles.wines_pic_l}> </Text>}
                                    >
                                        <MenuItem onPress={() => {
                                            this.hideMenu();
                                            this.goToWine(vinhoUid, navigation);

                                        }}>Ver vinho</MenuItem>


                                        <MenuItem onPress={this.hideMenu}>Adicionar à Adega</MenuItem>
                                        <MenuItem onPress={this.hideMenu}>Apagar</MenuItem>
                                        <MenuDivider/>
                                        <MenuItem onPress={this.hideMenu}>Cancelar</MenuItem>
                                    </Menu>
                                </ImageBackground>

这是onPress所呼叫的

goToWine(vinhoUid, navigation) {
        db.collection('vinhos').doc(vinhoUid).get()
            .then(docSnapshot => {
                store.dispatch(showWine(docSnapshot.data()));
            }).then(
            navigation.navigate('WineInfo')
        )
    }

当我单击该按钮转到另一页时,它应该获取被单击的酒的Uid,但是,它将获取渲染器返回的最后一个酒的Uid。 发生的是,当它将我发送到葡萄酒页面时,显示了错误的葡萄酒。

很抱歉,如果我格式化错误或以错误的方式询问,这是第一次,仍然有点丢失。也很慌张。

谢谢。

0 个答案:

没有答案