如何管理react原生平面列表中弹出窗口的动态显示

0pizxfdo  于 2021-09-23  发布在  Java
关注(0)|答案(0)|浏览(222)

我们如何设置一个弹出窗口,在react native中动态显示平面列表中的按钮(底部或顶部)。即,如果按钮位于平面列表的底部,并且用户单击,则弹出窗口应显示在按钮的顶部,否则显示在底部。
我得到我的平面列表项目的x和y位置,但当我将y传递给我的bouking项目以更改弹出窗口的顶部位置时。弹出窗口与相关项目不在同一y轴上。

<FlatList
                data={bookings}
                keyExtractor ={(item) => item._id + "-"+ item.nbPersons.toString()}
                CellRendererComponent={({item, index}) => {
                                  let Y;
                            return (
                                    <View
                                    onLayout={(event) => {
                                        var {x, y, width, height} = event.nativeEvent.layout
                                        // if(item.bookingStatus<50){
                                            setYv(y)
                                            console.log("Buoking num => ", index, "x:>", x, "y:>", yv, "book::>", item.bookingStatus, 'width::>', width, 'height::>', height)

                                        // }
                                    }}>

                                    <BookingItem booking={item} cordinateY={yv}/>
                                    </View>
                     )
                }}
            />

这是我的弹出代码:

<Modal
                      visible={show}
                      transparent={true}
                      onRequestClose={() => {
                      setShow((!show));
                    }}
                    >
                      <View style={{flex:1, top:cordinateY, left:0,}}>

                          <View style={styles.cardContainer}>

                            <Pressable  onPress={()=>setShow(false)} style={styles.cardBottom}><Text style={styles.cardTextAccepted}>ACCEPTER</Text></Pressable>
                            <Pressable  onPress={()=>setShow(false)} style={styles.cardBottom}><Text style={styles.cardTextRefused}>REFUSER</Text></Pressable>
                          </View>
                        </View>
                    </Modal>

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题