小言_互联网的博客

vue 刷新当前页面的方式

370人阅读  评论(0)

目录

一、问题

二、手动刷新当前页面

1.方法一:v-if  router-view

2.方法二:更改 router-view的 key值

三、总结


一、问题

   有时候需要手动刷新整个页面。比如一个页面右侧有一个患者切换的菜单,切换完患者后,要重新调用接口,才能让当前的页面中的数据与患者对应。

    对于这种情况有两种解决方法:

1.方法一:切换完患者后,直接重新调用接口;

                缺点:只能刷新页面中调用接口的数据,没有调用接口的部分需要单独处理。

2.方法二:手动刷新,刷新整个页面。-----如何实现?

二、手动刷新当前页面

1.方法一:v-if  router-view


  
  1. <template>
  2. <router-view v-if="isShow" ></router-view>
  3. </template>
  4. <script>
  5. import { defineComponent, provide, ref} from 'vue';
  6. export default defineComponent({
  7. provide( ){
  8. return{
  9. reload: this. reload
  10. };
  11. },
  12. setup( ) {
  13. //是否显示
  14. const isShow= ref( true);
  15. return{
  16. isShow,
  17. }
  18. },
  19. methods:{
  20. reload( ){
  21. // 1.方法一:v-if 刷新 router-view
  22. this. isShow= false;
  23. this.$nextTick( ()=>{
  24. this. isShow= true;
  25. })
  26. }
  27. }
  28. });
  29. </script>
  30. <style lang="scss" scoped>
  31. </style>

2.方法二:更改 router-view的 key值


  
  1. <template>
  2. <router-view :key="componentKey"></router-view>
  3. </template>
  4. <script>
  5. import { defineComponent, provide, ref} from 'vue';
  6. export default defineComponent({
  7. provide( ){
  8. return{
  9. reload: this. reload
  10. };
  11. },
  12. setup( ) {
  13. //是否显示
  14. const componentKey= ref( '')
  15. return{
  16. componentKey
  17. }
  18. },
  19. methods:{
  20. reload( ){
  21. // 2.方法二:更改 router-view的key值
  22. this. componentKey= new  Date(). getTime()
  23. }
  24. }
  25. });
  26. </script>
  27. <style lang="scss" scoped>
  28. </style>

三、总结

1.刷新整个页面的方法: 

  在router-view中:方法reload

    1)v-if

     2) 组件添加一个key值,更改key的值

   在需要刷新的页面接收inject("reload",reload")并在需要的刷新页面时调用  reload方法。

/*

希望对你有帮助!

如有错误,欢迎指正,非常感谢

*/


转载:https://blog.csdn.net/qq_45327886/article/details/127684814
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场