uniapp日常总结--uniapp页面传值

uniapp日常总结--uniapp页面传值

在Uniapp中,不同页面之间传值可以通过以下几种方式实现:

  1. URL参数传递:

    可以通过在跳转链接中添加参数,然后在目标页面通过this.$route.paramsthis.$route.query来获取传递的参数。

    html 复制代码
    <!-- 跳转页面 -->
    <uni-link :url="'/pages/targetPage/targetPage?param1=' + value1 + '&param2=' + value2">跳转到目标页面</uni-link>
    javascript 复制代码
    // 在目标页面获取参数
    export default {
      mounted() {
        const param1 = this.$route.params.param1;
        const param2 = this.$route.params.param2;
        console.log(param1, param2);
      }
    }
  2. 使用页面参数(Query):

    1. 在触发页面跳转的地方,例如在一个按钮的点击事件中:
    javascript 复制代码
    // 在当前页面的某个事件触发时跳转到目标页面,并传递参数
    uni.navigateTo({
      url: '/pages/targetPage/targetPage',
      // 传递的参数,可以是一个对象
      success(res) {
        console.log(res);
      },
      fail(err) {
        console.error(err);
      },
      // 参数传递方式,query 表示通过 URL 参数传递
      // params 表示通过 path 参数传递
      // 一般情况下使用 query 就可以了
      // 使用 params 时,目标页面的路径需要定义成带参数的形式
      // 如 '/pages/targetPage/targetPage/:param1/:param2'
      method: 'query',
      // 要传递的参数
      query: {
        key1: 'value1',
        key2: 'value2'
      }
    });
    
    
    
    //简写  在当前页面的某个事件触发时跳转到目标页面,并传递参数
          uni.navigateTo({
            url: '/pages/targetPage/targetPage?key1=value1&key2=value2',
          });
    1. 在目标页面中,可以通过this.$route.query来获取传递的参数:
    javascript 复制代码
    export default {
      onLoad(query) {
        // 获取传递的参数
        const key1 = this.$route.query.key1;
        const key2 = this.$route.query.key2;
    
        console.log(key1, key2);
      },
      // 其他页面生命周期或方法等
    };

    在目标页面的onLoad生命周期中,this.$route.query可以获取到传递的参数。key1key2就是在跳转时传递的参数。如果使用uni.switchTab方法进行页面跳转,是无法直接传递参数的。因为uni.switchTab用于跳转到 tabBar 页面,而 tabBar 页面是在底部显示的固定页面,不支持传递参数。如果需要在 tabBar 页面之间传递参数,可以考虑使用全局变量、本地存储等方式进行参数传递。

  3. Vuex状态管理:

    使用Vuex进行全局状态管理,可以在一个页面中修改状态,而在另一个页面中获取最新的状态。

    适用于需要在多个页面之间共享数据的情况。

    如果你的应用使用了Vuex,可以在一个页面的computed属性或methods中触发commit,然后在另一个页面通过this.$store.state获取值。

    在第一个页面:

    javascript 复制代码
    // 在页面中触发commit
    this.$store.commit('setValue', value);

    在第二个页面:

    javascript 复制代码
    // 在另一个页面获取值
    const value = this.$store.state.value;
    console.log(value);
  4. 使用本地存储(Storage):

    使用本地存储(localStorage或uni提供的存储API)将数据存储到本地,然后在另一个页面中读取。适用于需要持久保存数据的情况。如果数据不大,你也可以将数据存储在本地存储中,然后在目标页面读取。

    其中根据使用情景可以使用同步StorageSync或者异步Storage来实现。

    两者存在一定的区别,简单介绍可以查看下方链接:

    uniapp日常总结--setStorageSync和setStorage区别

    同步:使用uni.setStorageSyncuni.getStorageSync等方法,将数据存储在本地,然后在另一个页面读取。

    javascript 复制代码
    // 在页面A中保存数据到本地存储
    uni.setStorageSync('key', value);
    javascript 复制代码
    // 在页面B中从本地存储中读取数据
    const value = uni.getStorageSync('key');
    console.log(value);

    异步:使用uni.setStorageuni.getStorage等方法,将数据存储在本地,然后在另一个页面读取。

    javascript 复制代码
    // 在页面A中保存数据到本地存储
    uni.setStorage({
      key: 'yourDataKey',
      data: yourData,
    });
    javascript 复制代码
    // 在页面B中从本地存储中读取数据
    uni.getStorage({
      key: 'yourDataKey',
      success: function (res) {
     const pageData = res.data;
      },
    });
  5. 事件总线:

    使用uni提供的API进行页面传值,如uni.$emituni.$on

    通过事件触发和监听的方式在页面之间传递数据。

    使用Uniapp的事件总线来进行组件之间的通信。在发送组件中,使用uni.$emit触发一个自定义事件,并在接收组件中使用uni.$on监听这个事件。

    在发送组件:

    javascript 复制代码
    uni.$emit('customEvent', data);

    在接收组件:

    javascript 复制代码
    uni.$on('customEvent', (data) => {
      console.log(data);
    });
  6. 应用全局对象:

    通过uni.$app访问应用全局对象,从而在不同页面之间共享数据。

    在发送页面:

    javascript 复制代码
    uni.$app.globalData.value = data;

    在接收页面:

    javascript 复制代码
    const value = uni.$app.globalData.value;
    console.log(value);

URL参数传递对于简单的场景比较方便。Vuex适用于较大的应用状态管理。本地存储适用于需要在页面刷新后仍然保持的简单数据。事件总线方法适用于简单的组件通信。页面参数相对常用于跳转。根据具体需求和应用场景,选择合适的方式进行数据传递。不同的场景可能需要不同的方法。

相关推荐
passerby606133 分钟前
完成前端时间处理的另一块版图
前端·github·web components
掘了40 分钟前
「2025 年终总结」在所有失去的人中,我最怀念我自己
前端·后端·年终总结
崔庆才丨静觅43 分钟前
实用免费的 Short URL 短链接 API 对接说明
前端
崔庆才丨静觅1 小时前
5分钟快速搭建 AI 平台并用它赚钱!
前端
崔庆才丨静觅2 小时前
比官方便宜一半以上!Midjourney API 申请及使用
前端
Moment2 小时前
富文本编辑器在 AI 时代为什么这么受欢迎
前端·javascript·后端
崔庆才丨静觅2 小时前
刷屏全网的“nano-banana”API接入指南!0.1元/张量产高清创意图,开发者必藏
前端
剪刀石头布啊2 小时前
jwt介绍
前端
爱敲代码的小鱼2 小时前
AJAX(异步交互的技术来实现从服务端中获取数据):
前端·javascript·ajax
万物得其道者成2 小时前
UniApp 多端滑块验证码插件 zxj-slide-verify 实用指南
uni-app