Skip to content

Commit 32767c3

Browse files
committed
refactor: context-api.js
1 parent 1744da6 commit 32767c3

File tree

1 file changed

+18
-19
lines changed

1 file changed

+18
-19
lines changed

solutions/context-api.js

Lines changed: 18 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import React, { useState, createContext, useContext } from "react"
2-
import ReactDOM from "react-dom"
2+
import { createRoot } from "react-dom/client"
33

44
const languages = ["JavaScript", "Python"]
55
const LanguageContext = createContext({
@@ -8,25 +8,14 @@ const LanguageContext = createContext({
88
setLanguage: () => {},
99
})
1010

11-
function App() {
12-
const [language, setLanguage] = useState(languages[0])
13-
return (
14-
<LanguageContext.Provider value={{ languages, language, setLanguage }}>
15-
<MainSection />
16-
</LanguageContext.Provider>
17-
)
18-
}
19-
20-
function MainSection() {
11+
const MainSection = () => {
2112
const { languages, language, setLanguage } = useContext(LanguageContext)
2213
const currentIndex = languages.indexOf(language)
23-
const toggleLanguage = () => {
24-
if (currentIndex === languages.length - 1) {
25-
setLanguage(languages[0])
26-
} else {
27-
setLanguage(languages[currentIndex + 1])
28-
}
29-
}
14+
const toggleLanguage = () =>
15+
currentIndex === languages.length - 1
16+
? setLanguage(languages[0])
17+
: setLanguage(languages[currentIndex + 1])
18+
3019
return (
3120
<div>
3221
<p id="favoriteLanguage">{`Favorite programming language: ${language}`}</p>
@@ -37,4 +26,14 @@ function MainSection() {
3726
)
3827
}
3928

40-
ReactDOM.render(<App />, document.getElementById("root"))
29+
const App = () => {
30+
const [language, setLanguage] = useState(languages[0])
31+
return (
32+
<LanguageContext.Provider value={{ languages, language, setLanguage }}>
33+
<MainSection />
34+
</LanguageContext.Provider>
35+
)
36+
}
37+
38+
const root = createRoot(document.getElementById("root"))
39+
root.render(<App />)

0 commit comments

Comments
 (0)