App.js
import React, { Component} from 'react';
import Button from "./components/Button";
import Title from "./components/Title";
import Message from "./components/Message";
import LangContext from './LangContext';
class App extends Component {
state = {lang: "en"};
toggleLang = () =>{
this.setState(({lang}) => ({
lang: lang === "en"? "kr" : "en"
}));
};
render() {
const {lang} = this.state;
return (
<LangContext.Provider value={lang}>
<Button toggleLang={this.toggleLang} />
<Title/>
<Message />
</LangContext.Provider>
);
}
}
export default App;
Button.Js
import React, {useContext} from "react";
import LangContext from "../LangContext";
function Button({toggleLang}){
const lang = useContext(LangContext);
return <button onClick={toggleLang}>{lang}</button>;
}
export default Button;
Message.js
import React, {Component} from "react";
import LangContext from "../LangContext";
class Message extends Component{
static contextType = LangContext;
render(){
const {lang} = this.props;
if(lang === "en")
return(
<p>
"Context provides a way to pass data through the component tree
without having to pass props down manually at every level"
</p>
);
else
return(
<p>
"컨텍스트는 모든 레벨에서 일일이 props를 넘기지 않고도 컴포넌트 트리에
걸쳐서 데이터를 전달할 수 있는 방법을 제공합니다."
</p>
);
}
}
export default Message;
Title.js
import React from "react";
import LangContext from "../LangContext";
function Title() {
return (
<LangContext.Consumer>
{lang => {
const text = lang === "en"? "Context" : "컨텍스트";
return <h1>{text}</h1>;
}}
</LangContext.Consumer>
);
}
export default Title;
결과물
파일을 여러게 만들어서 진행하니 코드를 간결하게 쓰고 볼수있어서 좋은듯 하다.
필요에 따라 어떤 코드나 장치를 사용할지는 모르지만 google이 도와줄 듯 하다.