如何在功能组件和挂钩中使用AppState?必要还是我使用useEffect错误?

时间:2020-01-12 18:35:27

标签: ios reactjs react-native react-hooks

我希望能够在用户进入应用程序时运行功能。我以为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进行设置?

1 个答案:

答案 0 :(得分:11)

您可以为应用程序状态更改设置事件监听器,该事件监听器将在应用程序关闭,移至后台或前景时触发。您可以查看文档以获取更多详细信息link

 if(isPreview) {
    // render only in preview
 } else {
   // render only in simulator and device
 }