npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

pinia-nonreactive-state

v1.0.1

Published

Pinia non-reactive store instance generation plugin

Readme

pinia-nonreactive-state

安装

npm i pinia-nonreactive-state

用法

插件引入

import { PiniaNonreactiveState } from 'pinia-nonreactive-state';

pinia.use(PiniaNonreactiveState);

pinia store配置

const useTestStore = defineStore({
  id: 'testStoreId',
  state: () => ({
    text: '123'
  }),
  nonreactiveState: true,
})

生成非响应式store:$nonReactive

store初始化完成后直接调用 $nonReactive,可直接生成非响应式的store实例。这个实例保留了原始store的state和action,并且允许我们通过调用action或直接赋值来更新其状态,但这些更新不会触发响应式更新。

import { useMedalStore } from '@/stores/medal';

const medalStore = useMedalStore().$nonReactive?.() as ReturnType<typeof useMedalStore>;

手动持久化:$persistNonreactiveState

在对非响应式的store进行状态更新后,我们需要主动调用 $persistNonreactiveState 方法缓存更新后的数据。 这个方法接受一个参数,即缓存ID,它可以是字符串类型或函数类型。其使用方式与持久化插件中的key属性相同。

const customCacheId = (id) =>
    `${getStoreKeyPrefixWithUrlparams(['space_id'], {
      space_id: spaceId,
    })}__${id}`;

// 加载成功,更新持久化数据
detailCardStore.$persistNonreactiveState(customCacheId);

注意:使用该方法前须先接入持久化插件,因为它需要根据持久化插件的配置来确定哪些字段可被缓存。

自定义序列化函数: serialize

可自定义序列化函数,序列化后的数据直接存储到缓存,默认为JSON.stringify

const useStore = defineStore({
  id: 'testStoreId',
  state: () => ({
    text: '123'
  }),
  nonreactiveState: {
    // 自定义序列化函数,序列化后的数据直接存储到缓存,默认为`JSON.stringify`
    serialize: (stateObj) => {
      return cusSerialize(stateObj);
    };
  },
})

注意:该函数配置需要和持久化插件的序列函数逻辑保持一致,如果持久化插件没有序列化函数的配置,则无需配置。