useSyncExternalStore

This commit is contained in:
Primakov Alexandr Alexandrovich
2024-11-12 20:06:45 +03:00
parent bbcfef6e23
commit fd0eb66563
9 changed files with 172 additions and 53 deletions
+24 -6
View File
@@ -1,16 +1,34 @@
import React from 'react'
import React, { useCallback, useState } from 'react'
import { BrowserRouter } from 'react-router-dom'
import { ChakraProvider } from '@chakra-ui/react'
import { Dashboard } from './dashboard'
import { stars as starsContext } from './__data__/context'
import { users } from './__data__/users'
const App = () => {
const [stars, setStar] = useState(
Object.entries(users).reduce(
(acc, [id, user]) => ({ ...acc, [id]: user.rated }),
{},
),
)
const updateStar = useCallback((userId: string, rate: number) =>
setStar((state) => ({ ...state, [userId]: rate })), [setStar])
return (
<ChakraProvider>
<BrowserRouter>
<Dashboard />
</BrowserRouter>
</ChakraProvider>
<starsContext.Provider
value={{
stars,
setStar: updateStar,
}}
>
<ChakraProvider>
<BrowserRouter>
<Dashboard />
</BrowserRouter>
</ChakraProvider>
</starsContext.Provider>
)
}