When using uniapp to develop projects, we often encounter scenarios where we need to pass parameters and jump to the next page. However, when encountering a situation where the page needs to be refreshed, some developers find that the page does not refresh as expected.
The reason for this problem lies in the page jump mechanism of uniapp and the component update mechanism of the page. To address this problem, we need to know the following points:
In uniapp, page jump is implemented through methods such as uni.navigateTo
. When making a page jump, the new page will not refresh the entire page like in H5, but will only re-execute the life cycle function.
If you don’t know the life cycle function of uniapp, you can check [official document](https://uniapp.dcloud.io/frame?id=life cycle). Simply put, the life cycle functions in uniapp are onLoad
, onShow
, onReady
, onHide
and onUnload
, these functions respectively represent different states such as page loading, page display, page initial rendering completion, page hiding, and page unloading.
Therefore, if we need to update data after jumping to a new page, we should perform relevant operations in the onShow
life cycle function of the new page instead of expecting the page to be able to Auto Refresh.
In uniapp, the components in the page have their own data update mechanism. If we need to refresh a component on the page, we need to manually trigger the this.$forceUpdate()
method of the component.
For example, in the onShow
life cycle function of the page, we need to update a list component in the page, which can be implemented like this:
onShow() { // 获取最新数据 const newData = getData(); // 更新组件数据 this.$refs.list.data = newData; // 强制刷新列表 this.$refs.list.$forceUpdate(); }
It should be noted that if If you need to update other properties of the component (such as styles, etc.), you need to bind variables to the component or use calculated properties.
Through the analysis of the above two points, we can draw a very important conclusion when developing uniapp pages: when making a page jump, you should not expect the page to refresh automatically, but should # in the new page ##onShowData update in life cycle function. At the same time, if you need to refresh a component, you need to manually trigger the
$forceUpdate() method of the component.
The above is the detailed content of How to solve the problem that the uniapp page jumps with parameters but does not refresh. For more information, please follow other related articles on the PHP Chinese website!