как использовать AppState в функциональном компоненте и хуках? Необходимо или я использую useEffect неправильно? - PullRequest
3 голосов
/ 12 января 2020

Я хочу иметь возможность запускать функцию, когда пользователь заходит в приложение. Я думал, что useEffect уже будет делать что-то вроде этого, скажем, если я решу изменить буфер обмена моего телефона (скопировать другие тексты из другого приложения). Но это не рендеринг компонента.

const [clipped, setClipboard] = useState();
const [appView, setAppView] = useState(AppState.currentState);

const getFromClipboard = useCallback(() => {
  Clipboard.getString().then(content => {
    console.log('content:', content)
    setClipboard(content);
  });

}, [clipped]);

useEffect(() => {
  getFromClipboard();
}, [getFromClipboard, clipped, appView]);

Я бы предположил, что каждый раз, когда я копирую новый текст из другого приложения в буфер обмена, а затем я go возвращаюсь в это приложение, потому что состояние изменилось в обрезанном, это будет повторно использовать useEffect? К сожалению, не вызывать журнал консоли после первой начальной загрузки компонента.

Я наткнулся на AppState и подумал, что могу попробовать, но не уверен, как это настроить с помощью useEffect?

1 Ответ

7 голосов
/ 12 января 2020

Вы можете установить прослушиватель событий для изменения состояния приложения, которое будет срабатывать при закрытии приложения, перемещении в фоновый или передний план. Более подробную информацию можно найти в документации ссылка :

useEffect(() => {
  AppState.addEventListener('change', handleChange);  

  return () => {
    AppState.removeEventListener('change', handleChange);  
  }
}, []);


const handleChange = (newState) => {
  if (newState === "active") {
    getFromClipboard();
  }
}
...