daily-react
v1.0.6
Published
A lightweight, type-safe utility for creating React contexts with minimal boilerplate. Eliminates the common pain points of React context setup while maintaining full TypeScript support.
Downloads
89
Readme
⚠️ THIS PACKAGE IS DEPRECATED, but no-worries!
✅ Use daily-code/react instead, which includes all the features of this package and more.
A lightweight, type-safe utility for creating React contexts with minimal boilerplate. Eliminates the common pain points of React context setup while maintaining full TypeScript support.
Features
- 🚀 Zero boilerplate - Create contexts in just a few lines
- 🔒 Type-safe - Full TypeScript support with automatic type inference
- ⚡ Lightweight - Minimal bundle impact
- 🛡️ Error boundaries - Built-in provider validation
- 🎯 Simple API - Intuitive and developer-friendly
Installation
npm install create-react-ctx
# or
yarn add create-react-ctx
# or
pnpm add create-react-ctx
# or
bun add create-react-ctxAPI Reference
createReactCtx
function createReactCtx<
TCtxProps extends object,
TResult,
THookProps extends unknown[] = [],
>(
useProvider: (props: TCtxProps) => TResult,
useContextHook?: (...input: THookProps) => void
): {
context: React.Context<TResult>
Provider: React.FC<TCtxProps & { children: React.ReactNode }>
useContext: (...input: THookProps) => TResult
}useProvider: Function that receives provider props and returns the context value.useContextHook: Optional function that runs every time the context is consumed.- Returns:
{ context, Provider, useContext }
Example
const { Provider, useContext } = createReactCtx(
({ initial }: { initial: number }) => {
const [count, setCount] = useState(initial)
return { count, setCount }
}
)ErrorBoundary
class ErrorBoundary extends React.Component<
{
children: React.ReactNode
fallback:
| React.ReactNode
| ((error: Error, errorInfo: React.ErrorInfo) => React.ReactNode)
},
{
error: Error | null
errorInfo: React.ErrorInfo | null
}
> {}children: React children to render.fallback: ReactNode or function to render on error.
Example
<ErrorBoundary fallback={<div>Something went wrong</div>}>
<App />
</ErrorBoundary>useEffectExceptOnMount
function useEffectExceptOnMount(
effect: () => void | (() => void),
dependencies: React.DependencyList
): voideffect: Effect callback, same as inuseEffect.dependencies: Dependency list, same as inuseEffect.
Example
useEffectExceptOnMount(() => {
// Will not run on mount, only on updates
console.log('Updated!')
}, [value])Redux Toolkit Helpers
createSlice
function createSlice<State, Name extends string, Selectors, ActionReducers, CaseReducers, ReducerPath extends string = Name>(
name: Name,
config: { ... }
): Slice- Type-safe: Supports custom reducers and selectors.
- Actions: Accepts an
actionsobject for custom logic.
createStore
function createStore<TSlices extends Slice[]>(
...slices: TSlices
): [Store, useStore, actions]slices: Array of RTK slices.- Returns:
[store, useStore, actions]
createAdvancedStore
function createAdvancedStore<
TSlices extends Slice[],
TConfig extends Record<string, unknown>,
>(config: TConfig, ...slices: TSlices): [Store, useStore, actions]config: Store config (middleware, etc).slices: Array of RTK slices.- Returns:
[store, useStore, actions]
Example
const counterSlice = createSlice('counter', {
initialState: 0,
actions: {
increment: (state) => state + 1,
add: (state, amount: number) => state + amount,
},
})
const [store, useStore, actions] = createStore(counterSlice)Utility Types
Modify<T, R>: Replace keys in T with RPrettify<T>: Flatten typeRemoveFirstElement<T>: Remove first tuple elementEntriesToObject<T>: Convert entries to objectPartialObjectByKeys<T, K>: Partial by keysObjectPath<T>: Dot notation path for objectObjectPathValue<T, P>: Value at path
JSDoc
All public functions are documented with JSDoc in the source code for full IntelliSense and type safety.
License
MIT
