小程序模板:专业的小程序模板与静态模板分享平台
小程序
教程
搜索
当前位置 : 首页> 小程序教程> 微信小程序页面删除数据后实现自动刷新页面

微信小程序页面删除数据后实现自动刷新页面

微信小程序中,实现页面删除数据后自动刷新页面,可以通过几种方式来实现。通常,可以使用 wx.navigateBack、wx.redirectTo 或者使用数据绑定的方式来更新页面。


使用 wx.navigateBack

当你在删除数据后返回到之前的页面时,可以在返回页面时触发页面的重新加载。这种方法适用于你在从一个页面返回到列表页面时,列表页面需要刷新数据的场景。

步骤:

1. 删除数据的页面

在删除数据的页面(比如 delete-page.js)中,删除数据后使用 wx.navigateBack 返回到之前的页面:

// delete-page.js
Page({
  deleteData() {
    // 执行删除数据的逻辑
    wx.request({
      url: 'your-api-endpoint',
      method: 'DELETE',
      success(res) {
        if (res.statusCode === 200) {
          wx.navigateBack({
            delta: 1, // 返回到上一个页面
            success() {
              // 页面返回成功后的处理(可选)
            }
          });
        }
      }
    });
  }
});


2. 之前的页面

在之前的页面(比如 list-page.js)中,利用 onShow 生命周期函数重新加载数据:

// list-page.js
Page({
  data: {
    items: []
  },
  onLoad() {
    this.loadData();
  },
  onShow() {
    // 页面重新显示时加载数据
    this.loadData();
  },
  loadData() {
    wx.request({
      url: 'your-api-endpoint',
      success: (res) => {
        if (res.statusCode === 200) {
          this.setData({
            items: res.data
          });
        }
      }
    });
  }
});


使用 wx.redirectTo

如果你希望删除数据后跳转到另一个页面并刷新数据,可以使用 wx.redirectTo 来实现。

步骤:

1. 删除数据的页面

在删除数据后,使用 wx.redirectTo 跳转到目标页面:

// delete-page.js
Page({
  deleteData() {
    wx.request({
      url: 'your-api-endpoint',
      method: 'DELETE',
      success(res) {
        if (res.statusCode === 200) {
          wx.redirectTo({
            url: '/pages/list-page/list-page' // 跳转到目标页面
          });
        }
      }
    });
  }
});


2. 目标页面

在目标页面中,重新加载数据:

// list-page.js
Page({
  data: {
    items: []
  },
  onLoad() {
    this.loadData();
  },
  loadData() {
    wx.request({
      url: 'your-api-endpoint',
      success: (res) => {
        if (res.statusCode === 200) {
          this.setData({
            items: res.data
          });
        }
      }
    });
  }
});


使用全局事件(适用于复杂场景)

如果需要在多个页面之间共享数据状态或刷新页面,可以使用全局事件机制来实现。

1. 定义全局事件

在 app.js 中定义一个事件总线来广播数据更新的事件:

// app.js
App({
  globalData: {
    eventBus: new wx.EventChannel() // 或使用自定义的 Event Bus
  }
});


2. 触发事件

在删除数据的页面中,触发事件通知其他页面:

// delete-page.js
const app = getApp();
Page({
  deleteData() {
    wx.request({
      url: 'your-api-endpoint',
      method: 'DELETE',
      success(res) {
        if (res.statusCode === 200) {
          app.globalData.eventBus.emit('dataUpdated');
          wx.navigateBack(); // 返回上一个页面
        }
      }
    });
  }
});


3. 监听事件

在之前的页面中监听事件并刷新数据:

// list-page.js
const app = getApp();
Page({
  data: {
    items: []
  },
  onLoad() {
    this.loadData();
    app.globalData.eventBus.on('dataUpdated', this.loadData);
  },
  onUnload() {
    app.globalData.eventBus.off('dataUpdated', this.loadData);
  },
  loadData() {
    wx.request({
      url: 'your-api-endpoint',
      success: (res) => {
        if (res.statusCode === 200) {
          this.setData({
            items: res.data
          });
        }
      }
    });
  }
});

联系客服 意见反馈

签到成功!

已连续签到1天,签到3天将获得积分VIP1天

知道了