定制设计vue监听缓存数据(localStorage) 中值的更新

2定制设计个之间数据同步,可以通过localStorage数据变化,定制设计来改变数据的值。

方法:可以重写localStorage的setItem方法,定制设计当调用方法设置新值的时候,会new Event('setItemEvent')   用window.dispatchEvent()定制设计这个方法来派发一个事件,让window去监听

以下demo实现的是 一个页面获取诗句  然后将获取的数据用localStorage存储起来  另一个页面进行监听   一旦数据发生改变   则控制台打印  ‘值改变了’  并将新值打印出来

实现步骤:

1.先在src下新建utils文件夹,新建tools.js,写一个dispatchEvent派发事件 如:utils/tools.js

代码如下:

  1. function dispatchEventStroage () {
  2. const signSetItem = localStorage.setItem
  3. localStorage.setItem = function (key, val) {
  4. let setEvent = new Event('setItemEvent')
  5. setEvent.key = key
  6. setEvent.newValue = val
  7. window.dispatchEvent(setEvent)
  8. signSetItem.apply(this, arguments)
  9. }
  10. }
  11. export default dispatchEventStroage

2.在main.js里面全局引入tools,并use  以便二个vue组件能够触发派发事件

  1. import tools from './utils/tool.js'
  2. Vue.use(tool)

3.这里我写了一个index.vue页面   将sendSentences.vue组件和watchSentences.vue组件引进来好看效果

  1. <template>
  2. <div>
  3. <h3>主页面</h3>
  4. <watchSentences/>
  5. <sendSentences/>
  6. </div>
  7. </template>
  8. <script>
  9. // import axios from 'axios'
  10. import watchSentences from './watchSentences.vue'
  11. import sendSentences from './sendSentences.vue'
  12. export default {
  13. components: {
  14. watchSentences, sendSentences
  15. }
  16. }
  17. </script>

4.在一个vue组件当中向存储数据  这里是将获取到的诗句存储起来

  1. sendSentences.vue组件
  2. methods: {
  3. getSentences() {
  4. axios({
  5. url: 'https://api.apiopen.top/api/sentences'
  6. }).then(res => {
  7. this.sentencesTitle = res.data.result.from
  8. this.sentences = res.data.result.name
  9. window.localStorage.setItem('gsStorename', JSON.stringify(this.sentences))
  10. })
  11. }
  12. }

5.在另一个vue组件当中监听localStorage数据变化,来赋值,监听要写在mounted ()中,这里将打印‘值改变了’,并将每次变化后的新值打印出来了 代码如下

  1.  watchSentences.vue组件
  2. mounted() {
  3. // 监听localhostStorage的数据变化,结合utils/tool.js配合使用
  4. window.addEventListener('setItemEvent', function(e) {
  5. const newdata = JSON.parse(e.newValue)
  6. console.log('值改变了',newdata)
  7. })
  8. }

6.完结

效果:

 

 参考自:

网站建设定制开发 软件系统开发定制 定制软件开发 软件开发定制 定制app开发 app开发定制 app开发定制公司 电商商城定制开发 定制小程序开发 定制开发小程序 客户管理系统开发定制 定制网站 定制开发 crm开发定制 开发公司 小程序开发定制 定制软件 收款定制开发 企业网站定制开发 定制化开发 android系统定制开发 定制小程序开发费用 定制设计 专注app软件定制开发 软件开发定制定制 知名网站建设定制 软件定制开发供应商 应用系统定制开发 软件系统定制开发 企业管理系统定制开发 系统定制开发