Skip to content

Commit 64928bd

Browse files
committed
feat: add solution for context api challenge
1 parent ca6df6a commit 64928bd

File tree

1 file changed

+40
-0
lines changed

1 file changed

+40
-0
lines changed

solutions/context-api.js

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
import React, { useState, createContext, useContext } from "react"
2+
import ReactDOM from "react-dom"
3+
4+
const languages = ["JavaScript", "Python"]
5+
const LanguageContext = createContext({
6+
languages,
7+
language: languages[0],
8+
setLanguage: () => {},
9+
})
10+
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() {
21+
const { languages, language, setLanguage } = useContext(LanguageContext)
22+
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+
}
30+
return (
31+
<div>
32+
<p id="favoriteLanguage">{`Favorite programing language: ${language}`}</p>
33+
<button id="changeFavorite" onClick={toggleLanguage}>
34+
Toggle language
35+
</button>
36+
</div>
37+
)
38+
}
39+
40+
ReactDOM.render(<App />, document.getElementById("root"))

0 commit comments

Comments
 (0)