vueuse - useStorage(响应式本地/会话存储)

useStorage(响应式本地/会话存储)

官网示例地址

参数说明

/**
 * @param {string} key  键名(必填)
 * @param {string | number | boolean | object | null} defaults: 默认值(必填)
 * @param { StorageLike(localStorage | sessionStorage) | undefined } storage 默认为localStorage
 * @param { UseStorageOptions } options 一些额外的配置及自定义序列化配置
 **/
function useStorage<T extends(string | number | boolean | object | null)>(
  key: string,
  defaults: MaybeComputedRef<T>,
  storage: StorageLike | undefined,
  options: UseStorageOptions<T> = {},
)

使用示例

  1. 基础使用示例
import { useStorage } from '@vueuse/core'
// 1.设置
// 相当于 localStorage.setItem('my-store', 'hello')
// 参数个数为两个且键值相同时 多次调用useStorage无效只响应首次设置的值(函数内部会直接调用localStorage.getItem(key))
const state = useStorage('my-store', 'hello') // returns Ref<string>
console.log(state.value) // hello
// const state = useStorage('my-store', { hello: 'hello' })
// const state = useStorage('my-store', true) // returns Ref<boolean>
// const state = useStorage('my-store', 0) // returns Ref<number>

// 2. 修改参数
state.value = '你好~' // 你好~

// 3. 清除storage 即 localStorage.removeItem(key)
state.value = null
  1. 其他参数使用示例
import { useStorage } from '@vueuse/core'

// ! 注意:defaults 的数据类型跟序列化解析挂钩(即值类型的写入跟读取)。
localStorage.setItem('test', '{ "hello": "zhangsan", "test": "123" }')
// 1. 传入第三个参数`storage`时, 第二个`defaults`默认值参数将会失效
const store = useStorage('test', { hello: 'lisi', sex: '1' }, localStorage)
console.log(store.value.hello) // zhangsan
console.log(store.value.sex) // undefined
console.log(store.value.test) // 123

// 1.1 传入第四个参数options并将`mergeDefaults`设置为ture
// `mergeDefaults`为true时会跟`localStorage`的值进行浅层合并,e.g.{...defaults, ...localStorage }
const store = useStorage('test', { hello: 'lisi', sex: '1' }, localStorage, {
  mergeDefaults: true,
})
console.log(store.value.hello) // zhangsan
console.log(store.value.sex) // 1
console.log(store.value.test) // 123

// 2. options 自定义序列化参数`serializer`
// 自定义序列化
const store = useStorage(
  'key',
  '123',
  undefined,
  {
    serializer: {
      read: (v: any) => v ? JSON.parse(v) : null,
      write: (v: any) => JSON.parse(v),
    },
  },
)
console.log(store.value) // 123
store.value = null
console.log(store.value) // null

其他

useSessionStorage、useLocalStorage方法是基于useStorage,使用方式同useStorage。

项目在线地址github

vueuse相关系列文章

1.vueuse-useLocalStorage在项目中的使用

2.vueuse-useCssVar实现主题色切换功能

3.vueuse-createFetch实现接口请求及其封装(代替axios)

4.vueuse-useFullscreen优雅的使用全屏及退出全屏

5.vueuse-useDark实现暗黑主题及浅亮主题及Element-Plus暗黑模式

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要排除以`/api/`开头的请求,您可以使用Ant路径匹配模式来配置`spring.session.redis.filter-dispatcher-types`属性。具体来说,您可以配置`spring.session.redis.filter-dispatcher-types`属性,使其不拦截`/api/**`路径下的请求。 例如,以下配置将排除以`/api/`开头的所有请求: ``` spring.session.redis.filter-dispatcher-types=REQUEST,ASYNC spring.session.redis.servlet.filter.enabled=false spring.session.store-type=redis spring.session.redis.flush-mode=on_save spring.session.redis.namespace=spring:session spring.session.redis.cleanup-cron=0 * * * * * spring.session.redis.save-mode=on_set_attribute spring.session.redis.redis-url=redis://localhost:6379 spring.session.redis.redis-password=password spring.session.redis.redis-sentinel-master-id=mymaster spring.session.redis.redis-sentinel-nodes=sentinel://localhost:26379,sentinel://localhost:26380,sentinel://localhost:26381 spring.session.redis.redis-sentinel-password=password spring.session.redis.redis-cluster-nodes=localhost:6379,localhost:6380,localhost:6381 spring.session.redis.redis-cluster-max-redirects=3 spring.session.redis.redis-properties.ssl=true spring.session.redis.redis-properties.ssl-truststore=classpath:redis.truststore spring.session.redis.redis-properties.ssl-truststore-password=redispassword spring.session.redis.redis-properties.ssl-keystore=classpath:redis.keystore spring.session.redis.redis-properties.ssl-keystore-password=redispassword spring.session.redis.redis-properties.useSsl=true spring.session.redis.redis-properties.sslProtocols=TLSv1.2,TLSv1.3 spring.session.redis.redis-properties.sslCipherSuites=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 spring.session.redis.redis-properties.sslProvider=JDK spring.session.redis.redis-properties.sslEnableEndpointIdentification=true spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.session.SessionAutoConfiguration ``` 在以上配置中,我们使用了Ant路径匹配模式配置`spring.session.redis.filter-dispatcher-types`属性,使其不拦截`/api/**`路径下的请求。注意,我们也排除了Spring Boot自动配置的会话管理,因为我们已经使用了Spring Session Redis进行会话管理。 请注意,这只是一个示例配置,您需要根据您的具体需求进行修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值