Appearance
화면이 사용자에게 보이는지 확인하기
useVisibility
훅을 사용하면 화면이 현재 사용자에게 보이는지 여부를 알 수 있어요. 사용자가 화면을 보고 있을 때만 특정 작업을 실행하거나, 로그를 남길 수 있어요.
아래 코드는 화면이 사용자에게 보였을 때 visibility
값을 console.log
로 확인하는 예시예요.
- 홈 화면으로 이동하면
false
가 기록되고, 다시 돌아오면true
가 기록돼요. - 외부 링크(
https://toss.im
)로 이동하면false
가 기록되고, 다시 돌아오면true
가 기록돼요.
tsx
import { useVisibility } from '@react-native-bedrock/core';
import { useEffect } from 'react';
import { Button, Linking } from 'react-native';
export default function VisibilityPage() {
const visibility = useVisibility();
useEffect(() => {
console.log({
visibility,
});
}, [visibility]);
return (
<Button
onPress={() => {
Linking.openURL('https://toss.im');
}}
title="https://toss.im 이동"
/>
);
}
/**
* 출력 예시:
* { "visibility": false }
* { "visibility": true }
* { "visibility": false }
* { "visibility": true }
*/
상태 변경 감지하기
useVisibilityChange
훅을 사용하면 페이지나 컴포넌트가 사용자에게 보이는지 여부가 변경될 때 이를 감지할 수 있어요. 화면이 보이는 상태가 바뀌면 전달된 콜백 함수가 호출돼요. 예를 들어, 사용자가 다른 탭으로 이동하거나, 창을 최소화할 때 콜백이 호출돼요.
아래 코드는 화면의 보이는 상태가 변경될 때 visibilityState
값을 console.log
로 기록하는 예시예요.
- 홈 화면으로 이동하면
hidden
, 다시 돌아오면visible
을 기록해요. - 외부 링크(
https://toss.im
)로 이동하면hidden
을 기록하고, 다시 돌아오면visible
을 기록해요.
tsx
import { useVisibilityChange } from '@react-native-bedrock/core';
import { Button, Linking } from 'react-native';
export default function ImagePage() {
useVisibilityChange((visibilityState) => {
console.log({ visibilityState });
});
return (
<Button
onPress={() => {
Linking.openURL('https://toss.im');
}}
title="https://toss.im 이동"
/>
);
}
/**
* 출력 예시:
* { "visibilityState": "hidden" }
* { "visibilityState": "visible" }
* { "visibilityState": "hidden" }
* { "visibilityState": "visible" }
*/