onPress срабатывает сразу в ListItem, когда в списках есть короткое касание - PullRequest
0 голосов
/ 29 декабря 2018

Версия React Native Elements - 0.19.1, React Native - 0.57.8

Я использовал элементы React Native для создания экранов настроек, и он работает очень хорошо.Но я использовал карту и элемент списка, чтобы вызвать представление списка в представлении карты.Вот код для представления списка в представлении карты.

<View style = { styles.settingsCardContainerStyle }>
                <Card>
                    {
                        list.map((item, i) => (
                        <ListItem
                            key={i}
                            title={item.name}
                            leftIcon={{ name: item.icon }}
                            onPress= {() => this.props.navigation.navigate(item.screenName)}
                            activeOpacity={0.7}
                            containerStyle= {{
                                borderBottomWidth: 0.2,
                            }}

                        />
                        ))
                    }
                </Card>
            </View>

И список корректно отображается, реальная проблема заключается в том, что когда бы я ни делал пролистывание или прокрутку или что-то еще, нажим запускается сразу.Другими словами, если я сделаю естественную прокрутку в представлении списка, первый элемент сработает в огне.Как отложить событие при нажатии на 0,5 сек.Когда я использовал onLongpress, он работает правильно, но это занимает не менее 1 секунды для работы.Я пытался уменьшить длительность longpres, но, похоже, не работает.

Что мне теперь делать, есть ли способ отложить событие нажатия на несколько миллисекунд или как уменьшить длительное нажатие на 0.3 или 0.4 миллисекунд, что соответствует нормальному использованию пользователем или касанию.

1 Ответ

0 голосов
/ 29 декабря 2018

использовать debounce lodash js

()=> debounce(function() {
this.props.navigation.navigate(item.screenName)}, 300);
...