간단한 번역 앱을 구축하여 React Context System 이해
10025 단어 reactwebdevreduxjavascript
이 시리즈는 Stephen Grider의 "Modern React with Redux"시리즈udemy의 예에서 영감을 받았습니다.
따라서 터미널을 열고 새로운 반응 앱 번역을 만드십시오.
번역 앱
다음으로 cd를 번역하고 해당 폴더에서 코드 편집기를 열고 npm start를 수행합니다.
그런 다음 코드 편집기에서 src 디렉터리로 이동하여 그 안의 모든 항목을 제거합니다.
모두 삭제
다음으로 src 디렉토리 안에 index.js를 만들고 React에 대한 상용구 코드를 추가합니다.
import React from 'react';
import ReactDOM from 'react-dom';
import App from './components/App';
ReactDOM.render(
<App />, document.querySelector('#root')
);
그런 다음 src 디렉토리 안에 구성 요소 폴더를 만듭니다. 여기에서 App.js 파일을 만듭니다.
구성 요소 폴더
App.js의 내용은 아래와 같습니다.
import React, { Component } from 'react'
class App extends Component {
render() {
return (
<div>
App is rendered
</div>
)
}
}
export default App;
그런 다음 브라우저를 체크인하여 기본 설정이 완료된 위치를 확인하십시오.
앱이 렌더링됨
다음으로 기본 언어 선택기를 포함하도록 App.js를 업데이트합니다.
import React, { Component } from 'react';
import './App.css';
class App extends Component {
state = { language: 'english' };
onLangChange = (lang) => {
this.setState({ language: lang });
}
render() {
return (
<div className="main__container">
<div className="lang__flags">
<span>Select a language :</span>
<span onClick={() => this.onLangChange('english')}>🇺🇸</span>
<span onClick={() => this.onLangChange('hindi')}>🇮🇳</span>
</div>
{this.state.language}
</div>
)
}
}
export default App;
또한 동일한 디렉토리에 App.css 파일을 생성하고 아래 코드를 추가합니다.
.main__container {
display: grid;
place-content: center;
grid-gap: 10px;
}
.lang__flags {
font-size: 1.5rem;
font-weight: bold;
}
이제 앱은 텍스트를 변경하는 두 개의 클릭 가능한 플래그가 있는 아래와 같습니다.
기본 레이아웃
다음으로 구성 요소 디렉터리 내에 세 개의 새 파일인 UserCreate.js, Button.js 및 Field.js를 만듭니다.
새 파일
이제 입력 상자와 제출 버튼이 포함된 기본 양식을 표시하기 위해 이러한 파일 내에 코드를 빠르게 추가합니다.
UserCreate.js에 아래 코드를 입력합니다.
import React from 'react';
import Field from './Field';
import Button from './Button';
const UserCreate = () => {
return (
<div className="ui__form">
<Field />
<Button />
</div>
)
}
export default UserCreate
그런 다음 Field.js에 이 코드를 입력합니다.
import React, { Component } from 'react'
class Field extends Component {
render() {
return (
<div>
<label>Name </label>
<input />
</div>
)
}
}
export default Field;
그런 다음 Button.js에 다음 코드를 입력합니다.
import React, { Component } from 'react';
class Button extends Component {
render() {
return (
<button>Submit</button>
)
}
}
export default Button;
App.css에 이 양식에 대한 몇 가지 스타일도 넣을 것입니다.
…
…
.ui__form {
display: grid;
grid-gap: 10px;
background: #f9f9f9;
border: 1px solid #c1c1c1;
margin: 2rem auto 0 auto;
width: 600px;
padding: 1em;
}
.ui__form input {
background: #fff;
border: 1px solid #9c9c9c;
font-size:1rem;
padding: 0.7em;
}
.ui__form input:focus {
outline: 3px solid gold;
width:80%;
}
.ui__form label {
font-size:1.2rem;
font-weight: 900;
}
.ui__form button {
background: lightgrey;
border-radius: 2%;
font-size:1.2rem;
padding: 0.7em;
width: 30%;
border: 0;
}
.ui__form button:hover {
background: gold;
}
.err__msg{
font-size: 1rem;
color:red;
}
h3{
text-align: center;
}
이제 App.js로 이동하여 UserCreate 구성 요소를 연결합니다.
render() {
return (
<div className="main__container">
<div className="lang__flags">
<span>Select a language :</span>
<span onClick={() => this.onLangChange('english')}>🇺🇸</span>
<span onClick={() => this.onLangChange('hindi')}>🇮🇳</span>
</div>
**<UserCreate />**
</div>
)
}
이제 우리의 앱은 이 아름다운 형태를 보여줍니다.
아름다운 포름
이제 컨텍스트 시스템을 사용하여 앱 구성 요소에서 버튼 및 필드 구성 요소로 데이터를 전달합니다.
컨텍스트 시스템이 없으면 App에서 UserCreate로, 거기에서 Button 및 Field 구성 요소로 전달해야 했습니다.
이제 src 디렉토리 안에 새 폴더 contexts를 만들고 그 안에 LanguageContext.js 파일을 만듭니다.
LanguageContext
다음으로 LanguageContext.js 파일 내에 컨텍스트 개체를 만들고 영어를 기본값으로 전달합니다.
import React from 'react';
export default React.createContext('english');
다음으로 Button.js 파일에서 이 컨텍스트 개체를 사용합니다.
import React, { Component } from 'react';
import LanguageContext from '../contexts/LanguageContext';
class Button extends Component {
static contextType = LanguageContext;
render() {
const text = this.context === 'english' ? 'Submit' : 'जमा करें';
return (
<button>{text}</button>
)
}
}
export default Button;
이제 이 컨텍스트 개체를 사용하도록 Field.js 파일을 업데이트할 시간입니다.
import React, { Component } from 'react';
import LanguageContext from '../contexts/LanguageContext';
class Field extends Component {
static contextType = LanguageContext;
render() {
const text = this.context === 'english' ? 'Name' : 'नाम';
return (
<div>
<label>{text}</label>
<input />
</div>
)
}
}
export default Field;
문
static contextType = LanguageContext
은 컨텍스트 개체를 사용하기 위한 상용구입니다.다음으로 App.js 파일로 돌아가서 LanguageContext 개체를 사용합니다. Provider로 구성 요소를 UserCreate로 래핑하고 값을 전달해야 합니다. 이 경우에는 언어의 현재 값입니다.
import React, { Component } from 'react';
import UserCreate from './UserCreate';
import LanguageContext from '../contexts/LanguageContext';
import './App.css';
class App extends Component {
state = { language: 'english' };
onLangChange = (lang) => {
this.setState({ language: lang });
}
render() {
return (
<div className="main__container">
<div className="lang__flags">
<span>Select a language :</span>
<span onClick={() => this.onLangChange('english')}>🇺🇸</span>
<span onClick={() => this.onLangChange('hindi')}>🇮🇳</span>
</div>
<LanguageContext.Provider value={this.state.language}>
<UserCreate />
</LanguageContext.Provider>
</div>
)
}
}
export default App;
자식 구성 요소(이 경우에는 필드 및 버튼)에서 데이터를 사용하거나 표시하는 또 다른 방법이 있으며 이는 컨텍스트 개체 대신 소비자를 통해 이루어집니다. 우리는 여기서 그것을 탐구하지 않습니다.
이제 앱이 완성되었으므로 http://localhost:3000/으로 이동하여 인도 국기를 클릭하면 텍스트가 힌디어로 변경됩니다.
텍스트가 번역되었습니다.
이것으로 우리의 작은 앱이 완성되고 소스 코드here를 찾을 수 있습니다.
Reference
이 문제에 관하여(간단한 번역 앱을 구축하여 React Context System 이해), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/nabendu82/understanding-react-context-system-by-building-simple-translation-app-1end텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)