精华内容
下载资源
问答
  • wx.getstoragesync
    千次阅读
    2021-03-29 23:04:48

    关于本地缓存

    1.wx.setStorage(wx.setStorageSync)、wx.getStorage(wx.getStorageSync)、wx.clearStorage(wx.clearStorageSync)

    可以对本地缓存进行设置、获取和清理。本地缓存最大为10MB

    2.localStorage 是永久存储

    (找到的这一篇写的很好,转存了)具体详见博主原文
    ————————————————
    版权声明:本文为CSDN博主「Anna·」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/weixin_42220533/article/details/84304170

    更多相关内容
  • 一、全局变量的设置 在miniprogram > ... shopObject) // 把修改完的数据再次存放本地 }, 拿数据 // 接收数据可以这样玩 data: { checkAll: wx.getStorageSync('checkAll'), address: wx.getStorageSync('address'), },

    一、全局变量的设置

    在miniprogram > app.js 文件中设置,globalData对象就是存储全局变量的

    App({
        globalData: {
          hasLogin: false,
          openid: null
        },
        onLaunch: function () {
        }
    })

    2.全局变量的使用

    在app.js文件中,直接使用,如:

    this.globalData.hasLogin

    在其他非app.js文件中使用,需要先申明app变量,如:

    const app = getApp()   console.log(app.globalData.hasLogin)

    3.全局变量的修改 

    在app.js文件中:

    this.globalData.hasLogin = true

    在其他非app.js文件中修改:

    var app = getApp()
    ​
    app.globalData.hasLogin = true

    二、 使用 wx.navigateTo 与 wx.redirectTo 的时候,可以将部分数据放在 url 里面,并在新页面 onLoad 的时候初始化

    // Navigate
    wx.navigateTo({
      url: '../pageD/pageD?name=raymond&gender=male',
    })
    ​
    // Redirect
    wx.redirectTo({
      url: '../pageD/pageD?name=raymond&gender=male',
    })
    ​
    // pageB.js
    ...
    Page({
      onLoad: function(option){ // option 可以接收传过来的值
        console.log(option.name + 'is' + option.gender)
      }
    })
    

    需要注意的问题:wx.navigateTo 和 wx.redirectTo 不允许跳转到 tab 所包含的页面 onLoad 只执行一次

    假如在A页面有一个固定的值要传递到B页面,比如说一个固定的值id要传递给B

    <navigator url="../index/pageB?id='12345678'">跳转b页面</navigator>

    在事件中写入参数,当然如果是传多个参数的话就要在后面加 & (按得 符号)

    // 传入多个值这样传
    goSsarch(e){
      let val = e.currentTarget.dataset.item.name
      wx.navigateTo({
        url: '/pages/detail/detail?val='+val, // 传入单个值
        url: '/pages/detail/detail?val='+val + '&id='+ 123, // 传多个值
        url:`/pages/detail/detail?val=${val}&id=123` // 磨板字符串
      })
    }

    二、或者使用本地缓存 Storage 相关

    web:

    • 存: localStorage.setItem(key, value)

    • 取: localStorage.getItem(key)

    小程序:

    • 存: setStorageSync(key ,value) 是微信小程序同步缓存方法

    • 取: getStorageSync(key) 是微信小程序同步缓存方法

    • wx.setStorage(Object object) 是微信小程序异步缓存方法

    • wx.getStorage(Object object) 是微信小程序异步缓存方法

    以Sync 结尾 同步缓存,二者的区别是,异步不会阻塞当前任务,同步缓存直到同步方法处理完才能继续往下执行。
    异步就是不管保没保存成功,程序都会继续往下执行.同步是等保存成功了,才会执行下面的代码.
    使用异步,性能会更好;而使用同步,数据会更安全
    一般都使用同步,异步是为了用户体验的情况而选择,同步相对简单。

    存储数据

      //  把数据 num++ 
      numAdd(e) {
        let shopObject = wx.getStorageSync('shopObject') // 将数据取出来操作
        shopObject.forEach(item => {
          if (item.goods_id == e.detail) {
            item.num++
          }
        })
        wx.setStorageSync('shopObject', shopObject) // 把修改完的数据再次存放本地
      },

    拿数据

      // 接收数据可以这样玩
      data: {
        checkAll: wx.getStorageSync('checkAll'),
        address: wx.getStorageSync('address'),
      },

    展开全文
  • console.log( wx.getStorageSync('token')) //这个时候还能取到 http.getreq("/mini/UserActivity/oneGrab", that.data.parmas[0], function(res) { console.log(res) } ) } 在页面onload...
  • wx.getStorageSync要刷新才能取值

    千次阅读 2021-04-09 10:19:17
    wx.getStorageSync踩坑记 看到好多帖子说要去onShow()中使用wx.getStorageSync,我查的所有帖子几乎都是。但是我不管是用onShow还是onLoad都没有成功。 因为我使用了最新的获取用户信息的 wx.getUserProfile接口,它...

    wx.getStorageSync踩坑记

    看到好多帖子说要去onShow()中使用wx.getStorageSync,我查的所有帖子几乎都是。但是我不管是用onShow还是onLoad都没有成功。

    因为我使用了最新的获取用户信息的 wx.getUserProfile接口,它和以前的getUserInfo
    区别(之前用的这个可以实现,后来更新了)出来了,踩了个很大的坑!
    在调用wx.getUserProfile的时候,并不会重新刷新任何页面,即使我在里面用了
    wx.navigateBack
    于是:
     wx.getUserProfile({
          desc: '用于登录获取用户账号信息', // 声明获取用户个人信息后的用途,后续会展示在弹窗中,请谨慎填写
          success: (result) => {
            this.userTemp = result.userInfo;
            wx.setStorageSync("userInfo", result.userInfo);
            let pages = getCurrentPages();   //获取小程序页面栈
            let beforePage = pages[pages.length - 1];  //获取上个页面的实例对象
    
            beforePage.onShow();   //触发上个页面自定义的onShow()方法
          }
    
    我将上一个页面获取getStorageSync的onshow方法重新调用了
    

    哈哈哈,我又行起来了!

    展开全文
  • wx.getStorage异步和wx.getStorageSync同步区别

    万次阅读 多人点赞 2018-11-20 15:57:50
    1.wx.setStorage(wx.setStorageSync)、wx.getStorage(wx.getStorageSync)、wx.clearStorage(wx.clearStorageSync) 可以对本地缓存进行设置、获取和清理。本地缓存最大为10MB 2.localStorage 是永久存储 一...

    关于本地缓存

    1.wx.setStorage(wx.setStorageSync)、wx.getStorage(wx.getStorageSync)、wx.clearStorage(wx.clearStorageSync)

    可以对本地缓存进行设置、获取和清理。本地缓存最大为10MB

    2.localStorage 是永久存储

    一、异步缓存

    wx.setStorage(OBJECT)

    将数据存储在本地缓存中指定的 key 中,会覆盖掉原来该 key 对应的内容

    ?

    1

    2

    3

    4

    5

    6

    7

    8

    9

    wx.setStorage({

     

     key:"key",

     

     data:"value"

     

    })

    wx.getStorage(OBJECT)

    从本地缓存中异步获取指定 key 对应的内容。

    ?

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    wx.getStorage({

     

     key: 'key',

     

     success: function(res) {

     

       console.log(res.data)

     

     }

     

    })

    wx.getStorageInfo(OBJECT)

    异步获取当前storage的相关信息

    ?

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    wx.getStorageInfo({

     

     success: function(res) {

     

      console.log(res.keys)

     

      console.log(res.currentSize)

     

      console.log(res.limitSize)

     

     }

     

    })

    wx.removeStorage(OBJECT)

    从本地缓存中异步移除指定 key 。

    ?

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    wx.removeStorage({

     

     key: 'key',

     

     success: function(res) {

     

      console.log(res.data)

     

     }

     

    })

     二、同步缓存

    wx.setStorageSync(KEY,DATA)

    将 data 存储在本地缓存中指定的 key 中,会覆盖掉原来该 key 对应的内容,这是一个同步接口。

    wx.getStorageSync(KEY)

    从本地缓存中同步获取指定 key 对应的内容。

    wx.getStorageInfoSync

    同步获取当前storage的相关信息

    wx.removeStorageSync(KEY)

    从本地缓存中同步移除指定 key 。

    三、清理缓存

    wx.clearStorage()

    清理本地数据缓存。

    wx.clearStorageSync()

    同步清理本地数据缓存

    关于同步缓存和异步缓存的区别

    以Sync(同步,同时)结尾的都是都是同步缓存,二者的区别是,异步不会阻塞当前任务,同步缓存直到同步方法处理完才能继续往下执行。

    但是一般情况下不要用清除所有的缓存,如果想要清除相应的缓存,设置对应的缓存内容为空数组就好

     关于历史搜索

    ?

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    <input type="text" class="search-icon" placeholder="请输入要搜索的内容" bindinput="searchNameInput"/>

    <text bindtap="setSearchStorage">搜索</text>

     

     

    <view>

      <view>

        <text style="float:left;" bindtap="deleteHistory">历史搜索</text>

        <text style="float:right;" bindtap="deleteHistory">删除搜索历史</text>

      </view>

      <view>

        <view class="search-list" wx:for="{{searchData}}" wx:key="item">

          <view>{{item == null?'暂无数据':item}}</view>

        </view>

      </view>

    </view>

     页面

    这里有三个绑定事件

    bindinput="searchNameInput" 获取用户输入的数据

    bindtap="setSearchStorage" 设置本地存储

    bindtap="deleteHistory" 删除历史搜索

    ?

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    //获取用户输入框的值

      searchNameInput:function(e){

        var that = this;

        that.setData({

          inputValue:e.detail.value

        })

      }

     

    e.detail.value就代表了当前输入值

     当点击搜索的时候,bindtap="setSearchStorage"

    ?

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    //将用户输入的内容存入本地缓存,并且将搜索数据放到首页

    setSearchStorage:function(){

      var that = this

      if(this.data.inputValue != ''){

        //调用API向本地缓存存入数据

        var searchData = wx.getStorageSync('searchData') || []

        searchData.push(this.data.inputValue)

        wx.setStorageSync('searchData', searchData)

     

        //读取用户搜索商品

        var name = this.data.inputValue

        wx.request({

         url: 'www.shop.com/home/product/search',

         data: {name:name},

         method: 'GET',

         success: function(res){

            that.setData({

            goodsList: res.data.info,

          })

         },

        })

      }

    }

     流程这么走:

    1.用户输入数据,点击搜索

    2.如果数据不为空,加入(设置)本地缓存

    3.去服务器搜索用户想要的数据,赋值给这个页面的变量

    4.点击删除,去除本地这个key的value

    这里的缓存形式的  key=>value

    var searchData = wx.getStorageSync('searchData') || []

    获取本地名字为'searchData'的缓存,如果'searchData'这个缓存不存在就相当于重新什么一个空数组,赋值给searchData这个变量

    searchData.push(this.data.inputValue)

    将用户输入的值PUSH进searchData这个变量里

    wx.setStorageSync('searchData', searchData)

    调用API接口,重新设置key = 'searchData'的这个缓存的value等于searchData

    下面的wx.request是请求数据的内容,说腻了,印象够深了。

    这里没有绑定获取缓存的bindtap,只要获取到,然后添加到Page里面的data

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

    32

    33

    34

    35

    36

    37

    38

    39

    40

    41

    42

    43

    44

    45

    46

    47

    //从本地获取历史搜索数据

     

         var searchData = wx.getStorageSync('searchData')||[]

     

          this.setData({

     

            searchData:searchData

     

          })

     

      

     

    deleteHistory

     

    //删除历史搜索数据

     

      deleteHistory:function(){

     

        var that = this

     

        wx.showModal({

     

        title: '提示',

     

        content: '是否删除历史搜索',

     

        success: function(res) {

     

          if (res.confirm) {

     

            wx.setStorageSync('searchData', []);

     

            wx.switchTab({

     

              url: '/pages/index/index',

     

            })

     

           }

     

          }

     

        })

     

    }

    这里是将'searchData'这个key的缓存的value为空数组,而不是使用API提供的wx.clearStorageSync,这个会清除其他的所有缓存,而我只是想清除这一个key的缓存

     

    展开全文
  • varopenId=wx.getStorageSync('OPENID'); 很简单一行代码,就是获取不到值。 为什么,其实很简单,原先就没有保存进去。 保存的代码是: wx.setStorageSync({ key: 'OPENID', data: openId }) 原先是 wx....
  • wx.getStorageSync只有key,同步的 只有wx.getStorage异步在这里插入代码片的,才有回调函数 wx.getStorage wx.getStorage({ key: moneyList[i].moneyTpe, success: (res)=> { console.log(res) this....
  • 某个页面的数据需要从缓存里面取值,定义的时候不能直接在data里面取缓存里面的值,要在onload里面取setdata,这样才能确保能取到值 写在data里面,在开发版可以,发到体验版偶尔会取不到值,下面附上社区里面的解释...
  • { _this.setData({ paramsToken: wx.getStorageSync(config.USER_TOKEN), paramsUserId: wx.getStorageSync(config.USER_ID) }) resolve() }).then(res => { this.handlerInit(option) }) }, /** ------------------...
  • 在页面的data部分使用wx.getStorageSync时会因为页面生命周期导致wx.getStorageSync获取到的数据是空,从而影响数据的解析 正确的使用方法是data中不使用wx.getStorageSync,改放到生命周期函数中或其他方式赋值。 ...
  • Page({ data: { testnum:""//设置测试参数 }, test:function(){ var Num = this.data.... wx.setStorage({//存储到本地 key:"testNum", data:Num }) } }) Page({ data: { test...
  • 遇到的问题: var userPlan = testPlan1 ...var userPlan1 = wx.getStorageSync({key: 'userPlan'}) console.log("testPlan1: "+testPlan1) console.log("userPlan: "+userPlan) console.log("userPlan1:
  • 小程序wx.getStorageSync

    千次阅读 2019-09-30 17:19:20
    今天开发小程序的过程中在调用后台数据请求图片时,图片无法显示,原因是图片不在本地缓存,后来用了小程序的接口:wx.getStorageSync解决问题。此方法可以向本地缓存存入数据 贴上代码 <image src='{{item.lb_...
  • 后来仔细读官方文档才发现自己被误导了,wx.getStorageSync同步读缓存 与 wx.getStorage异步读缓存写法有差异,而我在wx.getStorageSync使用了wx.getStorage的写法。 原因如下: 当时看官方文档,按照阅读习惯,我...
  • 小程序 wx.getStorageSync 读取数据

    万次阅读 2019-07-10 11:56:01
    在index.wxml页面存储了一个数据wx....在另一个tab页面order.wxml取值wx.getStorageSync ("shopInfo") 答案: 在onload里面读取数据 onLoad: function() { this.setData({ shopI: wx.getStorageSyn...
  • 以前的业务今儿出现了报错,一查才知道, wx.getStorageSync 获取缓存中的空对象,小程序自动加上了nv_toString函数。 真机截图 开发者工具 目前解决方法,先自己写一个取缓存的方法顶一阵,等官方修复就没问题了...
  • 在使用wx.getStorageSync的时候,由于需要获取到许多键对应的值,这个时候一开始就一个一个的获取,最后发现wx.getStorageSync中是可以传参数的,其中index页面的内容是 &lt;view&gt; &lt;input ...
  • 没解决没解决没解决 每次都要重新编译之后才能get到,而现场传进去的虽然在storage里有,但是get到的还是旧数据
  • 加号改成逗号便可输出完全 如下
  • wx.getStorageSync()获取存储的数据失败

    万次阅读 2018-11-13 14:33:45
    wx.setStorage(Object object) 将数据存储在本地缓存中指定的 key 中。会覆盖掉原来该 key 对应的内容。数据存储生命周期跟小程序本身一致,即除用户主动删除或超过一定时间被自动清理,否则数据都一直可用。数据...
  • 如何判断 微信小程序wx.getStorageSync("xx")的值是否为空
  • wx.setStorage、wx.getStorage和wx.getStorageSync进行页面间传值 先是存储wx.setStorage Page({ data: { testnum:""//设置测试参数 }, test:function(){ var Num = this.data.testnum; wx....
  • 使用场景 小程序在获取用户授权后,获取用户的昵称和头像且会从数据库查询两个值显示到首页页面。 已经取得授权的情况下刷新,可以不弹框直接获取昵称和头像。此时也需要将数据库中的值显示到首页页面。...
  • 先是存储wx.setStorage Page({ data: { testnum:""//设置测试参数 }, test:function(){ var Num = this.data.testnum; wx.setStorage({//存储到本地 key:"testNum", data:Num }) } ...
  • 直接在页面上引入的接口地址是可以动态的由wx.get StorageSync()拿到缓存中的值的,   但是 因为接口太多,就定义了配置文件Config.js   作为接口的统一中转文件      页面上是这么用...
  • userName: JSON.stringify(wx.getStorageSync('userInfo').userName), 得到的数据解析后带双引号, 这真是一个气吐血的坑。 需要在往storage种存储的时候使用 wx.setStorageSync('userInfo',JSON.parse(userInfo))...
  • 每个微信小程序都可以有自己的本地缓存,可以通过 wx.setStorage(wx.setStorageSync)、wx.getStorage(wx.getStorageSync)、wx.clearStorage(wx.clearStorageSync)可以对本地缓存进行设置、获取和清理。...
  • 还只剩最后一个page需要研究了,胜利的曙光就在眼前。  在这个文件中,代码并不多,而且也比较容易。 [javascript] view plain copy ... logs: (wx.getStorageSync('logs') || []).map(function (log) {   
  • 每个微信小程序都可以有自己的本地缓存,可以通过 wx.setStorage(wx.setStorageSync)、wx.getStorage(wx.getStorageSync)、wx.clearStorage(wx.clearStorageSync)可以对本地缓存进行设置、获取和清理。...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 9,377
精华内容 3,750
关键字:

wx.getstoragesync

友情链接: gtn-st-lm.rar