Loading...
Loading...
Jotai state management patterns — atoms, globalAtom, contextAtom, and persistence.
npx skill4agent add onekeyhq/app-monorepo 1k-state-managementpackages/kit-bg/src/states/jotai/atoms/globalAtomEAtomNamessettings.tsaccount.tshardware.tscurrency.tspackages/kit/src/states/jotai/contexts/[feature_name]/atoms.tscontextAtomcreateJotaiContextcontexts/
├── marketV2/
│ ├── atoms.ts - State definitions
│ ├── actions.ts - State operations
│ └── index.ts - Exports
├── swap/
│ ├── atoms.ts
│ ├── actions.ts
│ └── index.tspackages/kit/src/views/globalAtomcontextAtompackages/kit-bg/src/states/jotai/atoms/packages/kit/src/states/jotai/contexts/[name]/atoms.ts// packages/kit-bg/src/states/jotai/atoms/myFeature.ts
import { globalAtom } from '../utils';
import { EAtomNames } from '../atomNames';
export const myFeatureAtom = globalAtom<MyFeatureState>({
name: EAtomNames.myFeature,
initialValue: { /* initial state */ },
persist: true, // if persistence needed
});// packages/kit/src/states/jotai/contexts/myFeature/atoms.ts
import { createJotaiContext } from '../../utils';
const { contextAtom, useContextAtom } = createJotaiContext();
export const myFeatureDataAtom = contextAtom<MyData | null>(null);
// Export hook for components
export { useContextAtom };import { useAtom, useAtomValue, useSetAtom } from 'jotai';
import { myFeatureAtom } from '@onekeyhq/kit-bg/src/states/jotai/atoms';
function MyComponent() {
// Read and write
const [value, setValue] = useAtom(myFeatureAtom);
// Read only
const value = useAtomValue(myFeatureAtom);
// Write only
const setValue = useSetAtom(myFeatureAtom);
}