Skip to content

编解码器 (Codecs)

编解码器负责把你的类型值 <-> URL 中的字符串 互相转换。

内置列表

  • serializers.stringCodec
  • serializers.numberCodec
  • serializers.booleanCodec
  • serializers.dateISOCodec
  • serializers.createJsonCodec<T>()
  • serializers.createArrayCodec(innerCodec, separator?)
  • serializers.createEnumCodec(values)

两种等价写法:

ts
queryRef('count', { defaultValue: 0, parse: serializers.numberCodec.parse });
// 或更简洁
queryRef('count', { defaultValue: 0, codec: serializers.numberCodec });

数组 & 枚举:

ts
const tags = queryRef<string[]>('tags', {
  defaultValue: [],
  codec: serializers.createArrayCodec(serializers.stringCodec),
});

const sort = queryRef<'asc' | 'desc'>('sort', {
  defaultValue: 'asc',
  codec: serializers.createEnumCodec(['asc', 'desc'] as const),
});

自定义编解码器

ts
import type { QueryCodec } from 'vue-qs';

const percentNumber: QueryCodec<number> = {
  parse: (raw) => (raw ? Number(raw.replace('%', '')) : 0),
  serialize: (n) => `${n}%`,
};

const discountRate = queryRef('discountRate', { defaultValue: 0, codec: percentNumber });

返回 null 表示在 URL 中省略该参数。

Released under the MIT License.