我希望能够在用户进入应用程序时运行功能。我以为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]);
我会假设每次我将来自不同应用程序的新文本复制到剪贴板中,然后再返回到此应用程序,因为状态已被裁剪,它会重新呈现useEffect吗?不幸的是,在首次首次加载组件后,它没有调用控制台日志。
我偶然发现了AppState,以为可以尝试一下,但不确定如何使用useEffect进行设置?
答案 0 :(得分:11)
您可以为应用程序状态更改设置事件监听器,该事件监听器将在应用程序关闭,移至后台或前景时触发。您可以查看文档以获取更多详细信息link:
if(isPreview) {
// render only in preview
} else {
// render only in simulator and device
}