Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

PollsList.js 1.4KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. import React, { useCallback, useEffect, useRef } from 'react';
  2. import { useTranslation } from 'react-i18next';
  3. import { FlatList } from 'react-native';
  4. import { Text } from 'react-native-paper';
  5. import { useSelector } from 'react-redux';
  6. import PollItem from './PollItem';
  7. import { chatStyles } from './styles';
  8. const PollsList = () => {
  9. const polls = useSelector(state => state['features/polls'].polls);
  10. const { t } = useTranslation();
  11. const listPolls = Object.keys(polls);
  12. const renderItem = useCallback(({ item }) => (
  13. <PollItem
  14. key = { item }
  15. pollId = { item } />)
  16. , []);
  17. const flatlistRef = useRef();
  18. const scrollToBottom = () => {
  19. flatlistRef.current.scrollToEnd({ animating: true });
  20. };
  21. useEffect(() => {
  22. scrollToBottom();
  23. }, [ polls ]);
  24. return (
  25. <>
  26. {
  27. listPolls.length === 0
  28. && <Text style = { chatStyles.noPollText } >
  29. {
  30. t('polls.results.empty')
  31. }
  32. </Text>
  33. }
  34. <FlatList
  35. data = { listPolls }
  36. extraData = { listPolls }
  37. // eslint-disable-next-line react/jsx-no-bind
  38. keyExtractor = { (item, index) => index.toString() }
  39. ref = { flatlistRef }
  40. renderItem = { renderItem } />
  41. </>
  42. );
  43. };
  44. export default PollsList;