LocalStorage页面监听变化

页面A

import React, { useEffect, useState } from 'react'

export default function Detail(props) {

    const [price, setPrice] = useState(0)//设置初始变量

    useEffect(() => {
           //页面初次加载时候进行ser更改
        localStorage.setItem('ser', new Date().getTime());

    }, [])

    const onclick = () => {
            //点击对name进行更改
        localStorage.setItem('name', new Date().getTime());
        //更改价格
        setPrice(1000)

    }
        
    return <button onClick={onclick}>价格{price}</button>

}

页面B

import React, { useEffect, useState } from 'react'

export default function Detail(props) {
        //初始化值
    const [price, setPrice] = useState(0)

    useEffect(() => {
            //定义监听函数
        const fn = (a, b) => {
                //打印触发的更改是什么
            console.log(a.key);
                   //如果是name更改,则进行赋值
            if (a.key === 'name') {

                setPrice(1000)

            }
        }
                //注册事件监听
        window.addEventListener('storage', fn)

        return () => {
                //销毁事件监听
            window.removeEventListener('storage', fn)

        }

    }, [])
    return (
        <div>
            价格:{price}
        </div>
    )
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vuex是一个专为Vue.js应用程序开发的状态管理模式。它可以将应用程序中的各种状态集中存储到一个容器中,统一管理与操作。同时,Local Storage是浏览器提供的一种本地储存数据的方式,可以将数据保存在浏览器中,不会轻易地被清除或丢失。 将Vuex与Local Storage结合起来,可以实现实时动态监听storage的变化。当Vuex中的状态发生改变时,可以通过LocalStorage将其同步到浏览器的存储中,同时在浏览器中对LocalStorage变化进行监听,并将其同步回Vuex的状态中,实现状态的统一维护和同步更新。 在实际应用中,可以通过Vue插件和Mutation监听Local Storage的变化,如下所示: ``` import Vue from 'vue' import Vuex from 'vuex' Vue.use(Vuex) const store = new Vuex.Store({ state: { // 状态数据 }, mutations: { // 改变状态的方法 } }) // 监听localStorage变化 window.addEventListener('storage', (event) => { if (event.storageArea === localStorage) { try { const state = JSON.parse(event.newValue) // 使用store.replaceState替换store中的状态 store.replaceState(Object.assign({}, store.state, state)) } catch (e) {} } }) //将状态存储到localStorage中 store.subscribe((mutation, state) => { localStorage.setItem('state', JSON.stringify(state)) }) export default store ``` 通过以上代码,在浏览器中可以对LocalStorage变化进行监听,并将其同步到Vuex的状态中。在操作Vuex状态时,也会自动更新LocalStorage中的数据,以实现状态的同步更新。这种方式可以有效地解决局部数据丢失和浏览器刷新后页面状态丢失的问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值