Skip to content

Commit 3f3964a

Browse files
committed
feat(language-example): change lang button way 02
1 parent ee1b0a2 commit 3f3964a

File tree

4 files changed

+69
-1
lines changed

4 files changed

+69
-1
lines changed

src/Components/ChangeLang/Main02.js

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
import React, { useState } from 'react';
2+
import Others from './Others02';
3+
import { LangContext } from './langContext';
4+
5+
export default function MainBiggerComponent() {
6+
const [lang, setLang] = useState('fa');
7+
8+
function toggleHandler() {
9+
setLang(lang === 'en' ? 'fa' : 'en');
10+
}
11+
12+
return (
13+
<LangContext.Provider value={{ lang, toggleHandler }}>
14+
<LangTogglerIndependent />
15+
<Others />
16+
</LangContext.Provider>
17+
);
18+
}
19+
20+
function LangTogglerIndependent() {
21+
return (
22+
<LangContext.Consumer>
23+
{({ lang, toggleHandler }) => (
24+
<button type="submit" onClick={toggleHandler}>
25+
active lang :
26+
{lang}
27+
</button>
28+
)}
29+
</LangContext.Consumer>
30+
);
31+
}

src/Components/ChangeLang/Others02.js

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
import React, { useContext } from 'react';
2+
import { LangContext, languagesObject } from './langContext';
3+
4+
export default function Others() {
5+
return (
6+
<FirstInnerComponent />
7+
);
8+
}
9+
10+
function FirstInnerComponent() {
11+
return (
12+
<SecoundInnerComponent />
13+
);
14+
}
15+
16+
function SecoundInnerComponent() {
17+
return (
18+
<ThirdInnerComponent />
19+
);
20+
}
21+
22+
function ThirdInnerComponent() {
23+
const { lang } = useContext(LangContext);
24+
25+
return (
26+
<p>{languagesObject[lang].join(' ')}</p>
27+
);
28+
}

src/Components/ChangeLang/index.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,17 @@
11
import React from 'react';
22
import MainBiggerComponent from './Main';
3+
import MainBiggerComponent02 from './Main02';
34

45
export default function ChangeLang() {
56
return (
67
<>
78
<h1>lang example</h1>
9+
<h2>way 01 :</h2>
810
<MainBiggerComponent />
11+
<br />
12+
<h2>way 02 :</h2>
13+
<MainBiggerComponent02 />
14+
<br />
915
</>
1016
);
1117
}

src/Components/ChangeLang/langContext.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,10 @@ const languagesObject = {
55
fa: ['سلام', 'عزیزم', 'چطوری؟'],
66
};
77

8-
const LangContext = React.createContext(languagesObject.fa);
8+
const LangContext = React.createContext({
9+
lang: languagesObject.fa,
10+
toggleLang: () => { },
11+
});
912

1013
export {
1114
LangContext,

0 commit comments

Comments
 (0)