CookiesModule
Cookies - Модуль для работы с куками
Nuxt install
// nuxt.config.js
export default {
modules: [
'shared-front/nuxt/cookies',
],
};
Module options
parseJSON
- type:
boolean - default:
true
Аргумент для cookie-universal
Vue install
Vue 2
// main.js
import Vue from 'vue';
import { Plugin, useCookiesSymbol } from 'shared-front/lib/modules/cookies';
Vue.use(Plugin, {
parseJSON: true,
});
const app = new Vue({
// For using `useCookies` and `useCookie`
provide: {
[useCookiesSymbol]: Vue.prototype.$cookies,
},
});
Vue 3
// main.ts
import { createApp } from 'vue';
import { Plugin } from 'shared-front/lib/modules/cookies';
import App from './App.vue';
const app = createApp(App);
app.use(Plugin, {
parseJSON: true,
});
composables
useCookies
Получение инстанса
ICookie
useCookie
Аналог nuxt 3
useCookie
Аргументы
name
- type:
string - required:
true
Название куки
options.cookies
- type:
ICookie - default:
useCookies()
Инстанс cookie-universal
options.default
- type:
() => T - required:
false
Дефолтное значение для рефа
Кука проставляется только при изменении Ref, в независимости от дефолтного значения
options
Опции для простановки куки
- type:
CookieSerializeOptions - default:
{}
interface CookieSerializeOptions {
domain?: string;
expires?: Date;
httpOnly?: boolean;
maxAge?: number;
path?: string;
sameSite?: boolean | 'lax' | 'strict' | 'none';
secure?: boolean;
}
Return
- type:
WritableComputedRef<T>
При простановке значения куки в режиме SSR каждый раз добавляется новый заголовок
Example
<template>
<div>
Server cookie counter: {{ serverCounter }}
<br>
Client cookie counter: {{ clientCounter }}
<br>
Ref cookie counter: {{ refCounter }}
<br>
<button @click="onClick">
Click
</button>
</div>
</template>
<script lang="ts" setup>
import { onMounted } from 'vue';
import { useCookies, useCookie } from '#sf/modules/cookies';
const cookies = useCookies();
let serverCounter = Number(cookies.get('server-counter')) || 0;
let clientCounter = Number(cookies.get('client-counter')) || 0;
const refCounter = useCookie('counter', {
default: () => 0,
});
if (process.server) {
cookies.set('server-counter', ++serverCounter);
}
const onClick = () => {
refCounter.value++;
};
onMounted(() => {
cookies.set('client-counter', ++clientCounter);
});
</script>