我有一个带Activity的应用。该应用在开始时会检查互联网连接。如果没有互联网连接,它会显示一个带有按钮的屏幕来刷新页面。问题是我的API调用(Axios)位于componentDidMount()
上,在第一次渲染后它只被调用一次。有什么方法可以重新加载页面,让它再次调用componentDidMount
吗?
我的意思是像全面刷新。我正在使用世博会顺便说一句。任何帮助是赞赏。对不起,没有例子,我只是想得到的想法,如果可能的话
我有一个带Activity的应用。该应用在开始时会检查互联网连接。如果没有互联网连接,它会显示一个带有按钮的屏幕来刷新页面。问题是我的API调用(Axios)位于componentDidMount()
上,在第一次渲染后它只被调用一次。有什么方法可以重新加载页面,让它再次调用componentDidMount
吗?
我的意思是像全面刷新。我正在使用世博会顺便说一句。任何帮助是赞赏。对不起,没有例子,我只是想得到的想法,如果可能的话
8条答案
按热度按时间s4chpxco1#
您可以强制更新组件。请检查以下内容:https://reactjs.org/docs/react-component.html#forceupdate
它将重新呈现组件。
检查此示例:
nimxete22#
我建议你把你的API调用放在你的组件中它自己的函数
fetchData
中。fetchData
也可以在成功提取后setState
,这将导致重新呈现并显示新鲜的数据。如果你想在componentDidMount上提取新鲜的数据,也可以在按钮点击时,然后创建一个fetchData
函数并从componentDidMount中调用它。然后为您的按钮设置适当的onPress属性onPress={this.fetchData}
3okqufwl3#
kgqe7b3p4#
请记住,通过调用组件上的setState函数,您可以刷新它。如果有一个按钮将刷新页面,我会这样做:
调用setState将更新您的组件,无论您传递给它的对象是什么。我不确定重新呈现页面是否调用
componentDidMount
函数,因此可能您需要将API调用移动到某个函数func
,并在componentDidMount
中调用此函数,并且在每个按钮按下事件后调用此函数。示例:2wnc66cl5#
我使用的是
Functional component
,并执行了以下操作。我在useEffect
中使用了一个状态作为依赖项,并在按下按钮时更改了该状态。7y4bm7vi6#
根据这个问题的浏览量,很多人都被重定向到这里,就像我一样。所以,我的答案可能不相关,但它肯定会帮助一些人。
为了重新呈现屏幕,我使用了
@react-navigation/native
中的useIsFocused
钩子通过使用
withNavigationFocus
高阶组件,可以在基于类的组件中使用它。这个HOC Package 了所需的Component类,并将isFocused属性传递给它。7rtdyuoh7#
您可以通过在功能组件中执行以下操作来刷新React Native或Expo应用。
步骤1
第2步然后将其用于您要使用的任何组件并刷新页面,例如警报
它会带来警报,当用户点击刷新页面按钮时,页面会被刷新。
o3imoua48#
我也陷入了同样的问题,然后我想通了,你只需要钩子或useState来解决刷新问题。在我的情况下,刷新随机甲板
我希望这能有所帮助。