Skip to content

Commit

Permalink
fix: fix type error, docs, and variable names
Browse files Browse the repository at this point in the history
  • Loading branch information
lodado committed Nov 24, 2024
1 parent f5dc84f commit ae2ddb7
Show file tree
Hide file tree
Showing 5 changed files with 13 additions and 18 deletions.
2 changes: 2 additions & 0 deletions .husky/pre-commit
Original file line number Diff line number Diff line change
@@ -1,2 +1,4 @@
#!/bin/sh

pnpm lint --fix
pnpm test
Original file line number Diff line number Diff line change
Expand Up @@ -7,15 +7,15 @@ export type ComposeProvidersProps = {
children: ReactNode
}

const ComposeProviders: React.FC<ComposeProvidersProps> = ({ providers, children }) => {
const ComposeProviders = ({ providers, children }: ComposeProvidersProps): ReactElement => {
return providers.reduceRight((acc, provider) => {
if (!isValidElement(provider)) {
throw new Error('Each provider must be a valid React element.')
}

// provider에 children 추가
return cloneElement(provider, {}, acc)
}, children)
}, children!) as ReactElement
}

export default ComposeProviders
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
'use client'

import { ComponentType, ReactElement } from 'react'
import React, { ComponentType, FC, ReactElement } from 'react'

import ComposeProviders from './ComposeProviders'

Expand All @@ -9,15 +7,13 @@ export type WithComposedProviderProps<C> = {
providers: ReactElement[]
}

const WithComposedProviders = <C extends object>({
Component,
providers,
}: WithComposedProviderProps<C>): ComponentType<C> => {
return (props: C) => (
const WithComposedProviders = <C extends object>({ Component, providers }: WithComposedProviderProps<C>): FC<C> => {
const WrappedComponent: FC<C> = (props: C) => (
<ComposeProviders providers={providers}>
<Component {...props} />
</ComposeProviders>
)
return WrappedComponent
}

export default WithComposedProviders
4 changes: 2 additions & 2 deletions apps/react-namespace/src/createNamespaceScope.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -51,8 +51,8 @@ export function createNamespaceScope(scopeName: string, createContextScopeDeps:
* @template StoreType - The type of the namespace store.
* @param {string} rootComponentName - The name of the root component.
* @param store - A function that returns the store or the store itself. If it's not a function, it's shared globally.
* @returns {[Provider, useNamespaceStore]} - A tuple containing the Provider component and the useNamespaceStore hook.
*/
* @returns The Provider component and the useNamespaceStore hook.
* */
function createScopeContext<StoreType extends NamespaceStore<Record<string | symbol, any>>>(
rootComponentName: string,
{ globalStore, localStore }: StoreOption<StoreType['state'], StoreType>,
Expand Down
9 changes: 3 additions & 6 deletions apps/react-namespace/src/hooks/useNamespaceExternalStores.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ export function useNamespaceExternalStores<State extends Record<string, any>>(
const selectedState = selector?.(state) ?? []
const previousSnapshotRef = useRef<Partial<State> | null>(null)

let isRender = true
let isRender = false

/**
* Allow zero keys
Expand All @@ -47,18 +47,15 @@ export function useNamespaceExternalStores<State extends Record<string, any>>(
})

// maybe i'll see this in the future for SSR
if (
isServerSide ||
(!isRender && previousSnapshotRef.current && isEqual(snapshot, previousSnapshotRef.current))
) {
if (!isServerSide && isRender && previousSnapshotRef.current && isEqual(snapshot, previousSnapshotRef.current)) {
// Return the previous snapshot to maintain reference equality
return previousSnapshotRef.current
}

// Update the reference and return the new snapshot
previousSnapshotRef.current = snapshot

isRender = false
isRender = true
return snapshot
}

Expand Down

0 comments on commit ae2ddb7

Please sign in to comment.