ReactJS-opetusohjelma aloittelijoille
Mikรค on ReactJS?
ReactJS on avoimen lรคhdekoodin kรคyttรถliittymรค JavaSkriptikirjasto kรคyttรถliittymien rakentamiseen. ReactJS yllรคpitรครค Facebook ja yksittรคisten kehittรคjien ja yritysten yhteisรถ. Sitรค kรคytetรครคn laajasti tukikohtana yksisivuisten verkkosivustojen ja mobiilisovellusten rakentamisessa. Se on erittรคin helppokรคyttรถinen, ja sen avulla kรคyttรคjรคt voivat luoda uudelleenkรคytettรคviรค kรคyttรถliittymรคkomponentteja.
ReactJS:n ominaisuudet
JSX: JSX on javascriptin laajennus. Vaikka JSX:n kรคyttรถ reactissa ei ole pakollista, se on yksi hyvistรค ominaisuuksista ja helppokรคyttรถinen.
komponentit: Komponentit ovat kuin puhtaita javascript-funktioita, jotka tekevรคt koodista helppoa jakamalla logiikan uudelleen kรคytettรคvรคksi itsenรคiseksi koodiksi. Voimme kรคyttรครค komponentteja funktioina ja komponentteja luokkina. Komponenteilla on myรถs tila, rekvisiitta, joka tekee elรคmรคstรค helppoa. Luokan sisรคllรค jokaisen rekvisiitin tila sรคilyy.
Virtuaalinen DOM: React luo virtuaalisen dom:n eli muistin sisรคisen datarakenteen vรคlimuistin. Vain viimeiset DOM-muutokset on myรถhemmin pรคivitetty selaimissa DOM.
Javascript Ilmaisut: JS-lausekkeita voidaan kรคyttรครค jsx-tiedostoissa kรคyttรคmรคllรค hakasulkeita, esimerkiksi {}.
ReactJS:n edut
Tรคssรค on tรคrkeitรค ReactJS:n kรคytรถn etuja/etuja:
- ReactJS kรคyttรครค virtuaalista domia, joka hyรถdyntรครค muistissa olevaa tietorakenteen vรคlimuistia, ja vain lopulliset muutokset pรคivitetรครคn selaimen domeihin. Tรคmรค tekee sovelluksesta nopeamman.
- Voit luoda valitsemiasi komponentteja kรคyttรคmรคllรค reagoida komponenttiominaisuutta. Komponentteja voidaan kรคyttรครค uudelleen ja ne ovat myรถs hyรถdyllisiรค koodin yllรคpidossa.
- Reactjs on avoimen lรคhdekoodin javascript-kirjasto, joten se on helppo aloittaa.
- ReactJS on tullut erittรคin suosituksi lyhyessรค ajassa, ja sitรค yllรคpitรคvรคt Facebook ja Instagram. Sitรค kรคyttรคvรคt monet kuuluisat yritykset, kuten Apple, Netflix, Jne
- Facebook yllรคpitรครค ReactJS-kirjastoa, joten se on hyvin yllรคpidetty ja pรคivitetty.
- ReactJS:รครค voidaan kรคyttรครค monipuolisen kรคyttรถliittymรคn kehittรคmiseen sekรค tyรถpรถytรค- ettรค mobiilisovelluksille.
- Helppo virheenkorjaus ja testaus, koska suurin osa koodauksesta on tehty Javascript HTML:n sijaan.
ReactJS:n haitat
Tรคssรค on ReactJS:n kรคytรถn haitat / haitat:
- Suurin osa koodista on kirjoitettu JSX:llรค, eli HTML ja css ovat osa javascriptiรค, se voi olla melko hรคmmentรคvรครค, koska useimmat muut puitteet haluavat pitรครค HTML:n erillรครคn javascript-koodista.
- ReactJS:n tiedostokoko on suuri.
ReactJS:n kรคyttรคminen CDN:stรค
Jotta voimme aloittaa reactin kรคytรถn, meidรคn on ensin asennettava reactjs. Voit helposti aloittaa reactjs:n kรคytรถn kรคyttรคmรคllรค CDN javascript -tiedostoja alla olevan kuvan mukaisesti.
Siirry reactjs:n viralliselle sivustolle saadaksesi CDN-linkit, esim. https://reactjs.org/docs/cdn-links.html ja saat tarvittavat tiedostot seuraavan kuvan selittรคmiseksi.
Kehittรคjรคlle
<script crossorigin src="https://unpkg.com/react@version/umd/react.development.js"></script> <script crossorigin src="https://unpkg.com/react-dom@version/umd/react-dom.development.js"></script>
Tuot
<script crossorigin src="https://unpkg.com/react@version/umd/react.production.min.js"></script> <script crossorigin src="https://unpkg.com/react-dom@version/umd/react-dom.production.min.js"></script>
korvata versio uusimmalla react-versiolla sekรค react-development.js:lle ettรค react-dom.developement.js:lle. Voit isรคnnรถidรค tiedostoja lopussa aloittaaksesi tyรถskentelyn reactjs:n kanssa.
Jos aiot kรคyttรครค CDN-tiedostoja, muista sรคilyttรครค cross-origin-attribuutti verkkotunnusten vรคlisten ongelmien vรคlttรคmiseksi. Reactjs-koodia ei voi suorittaa suoraan selaimessa, ja se on muutettava Babelin avulla javascriptiksi ennen kuin se suoritetaan selaimessa.
Tรคssรค on BabelJS-skripti, jota voidaan kรคyttรครค:
<script src="https://unpkg.com/babel-standalone@6.15.0/babel.min.js"></script>
Tรคssรค on toimiva ReactJS-esimerkki cdn-tiedostoilla ja babeljs-skriptillรค.
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>Hello World</title>
<script src="https://unpkg.com/react@16/umd/react.development.js"></script>
<script src="https://unpkg.com/react-dom@16/umd/react-dom.development.js"></script>
<script src="https://unpkg.com/babel-standalone@6.15.0/babel.min.js"></script>
</head>
<body>
<div id="app"></div>
<script type="text/babel">
ReactDOM.render(
<h1>Hello, from Guru99 Tutorials!</h1>,
document.getElementById('app')
);
</script>
</body>
</html>
lรคhtรถ:
Kรคsittelemme koodin yksityiskohtia seuraavassa luvussa, katsotaanpa tรครคllรค tyรถskentely CDN-tiedostojen kanssa. Sanotaan, ettรค babel-skriptin kรคyttรคminen suoraan ei ole hyvรค kรคytรคntรถ, ja uudet tulokkaat voivat vain kรคyttรครค sitรค oppiakseen reagoimaan toistaiseksi. Tuotannossa sinun on asennettava react kรคyttรคmรคllรค npm-pakettia.
NPM-pakettien kรคyttรถ
Varmista, ettรค sinulla on nodejs asennettuna. Jos sitรค ei ole asennettu, kรคy lรคpi tรคmรค opetusohjelma solmukohtaisille (https://www.guru99.com/node-js-tutorial.html) asennus.
Kun nodejs on asennettu, luo kansio reactproj/.
Aloita projektin mรครคrittรคminen suorittamalla komento npm init.
Tรคltรค kansiorakenne nรคyttรครค:
reactproj\ package.json
Nyt asennamme tarvitsemamme paketit.
Tรคssรค on luettelo reactjs-paketteista:
npm install react --save-dev npm install react-dom --save-dev npm install react-scripts --save-dev
Avaa komentokehote ja suorita yllรค olevat komennot kansion reactproj/ sisรคllรค.
Luo kansio src / jossa kaikki js-koodi tulee kyseiseen kansioon. Kaikki reactjs-projektin koodi on saatavilla src/-kansiossa. Luo tiedosto index.js ja lisรครค tuontireact ja react-dom alla olevan kuvan mukaisesti.
index.js
import React from 'react';
import ReactDOM from 'react-dom';
ReactDOM.render(
<h1>Hello, from Guru99 Tutorials!</h1>,
document.getElementById('root')
);
Olemme palauttaneet reactjs:n peruskoodin. Selitรคmme sen yksityiskohdat seuraavassa luvussa. Haluamme nรคyttรครค Hei, Guru99 Tutorialsista ja sama annetaan dom-elementille, jonka tunnus on "root". Se on otettu index.html-tiedostosta, joka on aloitustiedosto, kuten alla on esitetty.
Luo kansio public/ ja lisรครค siihen index.html alla olevan kuvan mukaisesti
index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>ReactJS Demo</title>
</head>
<body>
<div id = "root"></div>
</body>
</html>
Paketin react-skriptit huolehtivat koodin kokoamisesta ja palvelimen kรคynnistรคmisestรค nรคyttรคmรครคn html-tiedostoa eli index.html. Sinun on lisรคttรคvรค tiedostoon package.json komento, joka huolehtii react-skriptien kรคytรถstรค koodin kรครคntรคmiseen ja palvelimen kรคynnistรคmiseen alla kuvatulla tavalla:
"scripts": {
"start": "react-scripts start"
}
Kun olet asentanut kaikki paketit ja lisรคnnyt yllรค olevan komennon, lopullinen package.json on seuraava:
Package.json
{
"name": "reactproj",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"start": "react-scripts start"
},
"author": "",
"license": "ISC",
"devDependencies": {
"react": "^16.9.0",
"react-dom": "^16.9.0",
"react-scripts": "^3.1.1"
}
}
Aloita reactjs-testaus suorittamalla komento
npm run start
C:\reactproj>npm run start > reactproj@1.0.0 start C:\reactproj > react-scripts start
Se avaa selaimen URL-osoitteella http://localhost:3000/ kuten alla:
public/index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>ReactJS Demo</title>
</head>
<body>
<div id = "root"></div>
</body>
</html>
Aiomme kรคyttรครค samaa prosessia JavaScript-tiedostojen suorittamiseen myรถs seuraavissa luvuissa. Lisรครค kaikki js- ja .jsx-tiedostosi src/-kansioon. Tiedostorakenne on seuraava:
reatproj/
src/
index.js
node_modules/
public/
index.html
package.json
Kuinka luoda First React -projektiasetuksesi
Tรคssรค on vaiheittainen opas tรคssรค ReactJS-opetusohjelmassa aloittaaksesi ensimmรคisestรค react-sovelluksesta.
Vaihe 1) Tuo reaktiopaketit.
1. ReactJS:n aloittamiseksi meidรคn on ensin tuotava react-paketit seuraavasti.
import React from 'react'; import ReactDOM from 'react-dom';
2. Tallenna tiedosto nimellรค index.js kansioon src/
Vaihe 2) Kirjoita yksinkertainen koodi.
Kirjoitamme tรคhรคn opetusohjelmaan React JS yksinkertaisen koodin, jossa nรคytรคmme viestin "Hei, Guru99 Tutorialsista!"
ReactDOM.render(
<h1>Hello, from Guru99 Tutorials!</h1>,
document.getElementById('root')
);
ReactDOM.render lisรครค tagi elementtiin, jonka tunnus on root. Tรคssรค meillรค oleva html-tiedosto:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>ReactJS Demo</title>
</head>
<body>
<div id = "root"></div>
</body>
</html>
Vaihe 3) Kokoa koodi.
Seuraavaksi tรคssรค React.js-opetusohjelmassa meidรคn on kรครคnnettรคvรค koodi saadaksemme tulosteen selaimeen.
Tรคssรค on kansiorakenne:
reactproj/
node_modules/
src/
index.js
package.json
public/
index.html
Olemme lisรคnneet komennot lopullisen tiedoston kรครคntรคmiseksi package.json-tiedostoon seuraavasti:
"scripts": {
"start": "react-scripts start"
},
Kรครคntรครคksesi lopullisen tiedoston, suorita seuraava komento:
npm run start
Kun suoritat yllรค olevan komennon, se kokoaa tiedostot ja ilmoittaa virheistรค. Jos kaikki nรคyttรครค hyvรคltรค, se avaa selaimen ja suorittaa index.html-tiedoston osoitteessa http://localhost:3000/index.html
Komento: npm ajon aloitus:
C:\reactproj>npm run start > reactproj@1.0.0 start C:\reactproj > react-scripts start
Vaihe 4) Tarkista lรคhtรถ.
URL-osoite http://localhost:3000 avautuu selaimessa, kun koodi on kรครคnnetty alla olevan kuvan mukaisesti:
Mikรค on JSX?
JSX on javascriptin laajennus. Se on malliskripti, jossa sinulla on valta kรคyttรครค HTML- ja Javascript yhteen.
Tรคssรค on yksinkertainen esimerkki JSX-koodista.
const h1tag = "<h1>Hello, from Guru99 Tutorials!</h1>";
Miksi tarvitsemme JSX:รครค Reactissa?
Kรคyttรถliittymรครค varten tarvitsemme HTML-koodin, ja jokaisella dom-elementillรค on kรคsiteltรคvรค tapahtumia, tilamuutoksia jne.
Reactin tapauksessa sen avulla voimme kรคyttรครค HTML- ja javascriptiรค samassa tiedostossa ja huolehtia dom-tilan tilan muutoksista tehokkaasti.
JSX:n lausekkeet
Tรคssรค on yksinkertainen esimerkki lausekkeiden kรคytรถstรค JSX:ssรค.
Aiemmissa ReactJS-esimerkeissรค olimme kirjoittaneet jotain tรคllaista:
index.js
import React from 'react';
import ReactDOM from 'react-dom';
ReactDOM.render(
<h1>Hello, from Guru99 Tutorials!</h1>,
document.getElementById('root')
);
Muutamme nyt yllรค olevan koodin lausekkeiden lisรครคmiseksi. Lausekkeita kรคytetรครคn hakasulkeissa {}, ja niitรค laajennetaan ajon aikana. React-lausekkeet ovat samat kuin JavaScript-lausekkeet.
index.js
import React from 'react';
import ReactDOM from 'react-dom';
const display = "Hello, from Guru99 Tutorials!";
const h1tag = "<h1>{display}</h1>";
ReactDOM.render(
h1tag,
document.getElementById('root')
);
Testataan nyt samaa selaimessa.
Voit nรคhdรค, ettรค {display}-lauseketta ei ole korvattu. React ei tiedรค mitรค tehdรค, kun lauseketta kรคytetรครคn .js-tiedoston sisรคllรค.
Lisรคtรครคn nyt muutoksia ja luodaan .jsx-tiedosto alla olevan kuvan mukaisesti:
test.jsx
import React from 'react';
import ReactDOM from 'react-dom';
const display = "Hello, to Guru99 Tutorials";
const h1tag =<h1>{display}</h1>;
export default h1tag;
Olemme lisรคnneet vaaditun koodin ja kรคytรคmme text.jsx-tiedostoa index.js:ssรค. Haluamme h1tag muuttuja kรคytettรคvรคksi script.js:n sisรคllรค, joten sama viedรครคn yllรค esitetyllรค tavalla test.jsx:ssรค
Tรคssรค on index.js:n muokattu koodi
import React from 'react';
import ReactDOM from 'react-dom';
import h1tag from './test.jsx';
ReactDOM.render(
h1tag,
document.getElementById('root')
);
Kรคyttรครคksemme test.jsx-tiedostoa index.js:ssรค meidรคn on ensin tuotava se alla kuvatulla tavalla:
import h1tag from './test.jsx';
Voimme kรคyttรครค h1tagia nyt ReactDOM.renderissรค alla esitetyllรค tavalla:
ReactDOM.render(
h1tag,
document.getElementById('root')
);
Tรคssรค on tulos, kun tarkistamme saman selaimessa:
Mitรค komponentit ovat ReactJS:ssรค?
Komponentit ovat kuin puhtaita javascript-funktioita, jotka tekevรคt koodista helppoa jakamalla logiikan uudelleen kรคytettรคvรคksi itsenรคiseksi koodiksi.
Komponentit funktioina
test.jsx
import React from 'react';
import ReactDOM from 'react-dom';
function Hello() {
return <h1>Hello, from Guru99 Tutorials!</h1>;
}
const Hello_comp = <Hello />;
export default Hello_comp;
Olemme luoneet funktion nimeltรค Hei joka palautti yllรค olevan h1-tunnisteen. Toiminnon nimi toimii elementtinรค, kuten alla:
const Hello_comp = <Hello />; export default Hello_comp;
Komponentti Hei kรคytetรครคn HTML-tunnisteena, esim. ja mรครคrรคtty Hello_comp muuttuja ja sama viedรครคn kรคyttรคmรคllรค vientiรค.
Kรคytรคmme nyt tรคtรค komponenttia index.js-tiedostossa alla esitetyllรค tavalla:
index.js
import React from 'react';
import ReactDOM from 'react-dom';
import Hello_comp from './test.jsx';
ReactDOM.render(
Hello_comp,
document.getElementById('root')
);
Tรคssรค tuloste selaimessa:
Luokka komponentiksi
Tรคssรค on ReactJS-esimerkki, joka kรคyttรครค luokkaa komponenttina.
test.jsx
import React from 'react';
import ReactDOM from 'react-dom';
class Hello extends React. Component {
render() {
return <h1>Hello, from Guru99 Tutorials!</h1>;
}
}
export default Hello;
Voimme kรคyttรครค Hello-komponenttia index.js-tiedostossa seuraavasti:
index.js
import React from 'react';
import ReactDOM from 'react-dom';
import Hello from './test.jsx';
ReactDOM.render(
<Hello />,
document.getElementById('root')
);
Komponenttia Hello kรคytetรครคn HTML-tunnisteena eli .
Tรคssรค saman tulos.
Mikรค on tila ReactJS:ssรค?
Tila on JavaScript-objekti, joka on samanlainen kuin rekvisiitta, jossa on dataa kรคytettรคvรคksi reactjs-renderรถinnin kanssa. Tilatieto on yksityinen objekti ja sitรค kรคytetรครคn luokan sisรคllรค.
Esimerkki valtiosta
Tรคssรค on toimiva esimerkki tilan kรคytรถstรค luokassa.
test.jsx
import React from 'react';
import ReactDOM from 'react-dom';
class Hello extends React.Component {
constructor(props) {
super(props);
this.state = {
msg: "Hello, from Guru99 Tutorials!"
}
}
render() {
return <h1>{this.state.msg}</h1>;
}
}
export default Hello;
index.js
import React from 'react';
import ReactDOM from 'react-dom';
import Hello from './test.jsx';
ReactDOM.render(
<Hello />,
document.getElementById('root')
);
Tรคmรคn saamme, kun testaamme sitรค selaimessa:
Mitรค rekvisiitta ReactJS:ssรค ovat?
Props ovat ominaisuuksia, joita kรคytetรครคn komponentin sisรคllรค. Ne toimivat globaaleina objekteina tai muuttujina, joita voidaan kรคyttรครค komponentin sisรคllรค.
Rekvisiitta toiminnalliseen komponenttiin
Tรคssรค on esimerkki rekvisiittajen vรคlittรคmisestรค funktiokomponenttiin.
import React from 'react';
import ReactDOM from 'react-dom';
function Hello(props) {
return <h1>{props.msg}</h1>;
}
const Hello_comp = <Hello msg="Hello, from Guru99 Tutorials!" />;
export default Hello_comp;
Kuten yllรค nรคkyy, olemme lisรคnneet msg omistaa Komponentti. Samaan pรครคsee kรคsiksi kuin rekvisiitta Hello-funktion sisรคllรค, joka on objekti, jolla on msg attribuutin tiedot, ja samaa kรคytetรครคn lausekkeena.
Komponenttia kรคytetรครคn index.js:ssรค seuraavasti:
index.js
import React from 'react';
import ReactDOM from 'react-dom';
import Hello_comp from './test.jsx';
ReactDOM.render(
Hello_comp,
document.getElementById('root')
);
Tรคssรค tuloste selaimessa:
Rekvisiitta luokan komponenttiin
Jotta pรครคset luokan rekvisiittiin, voimme tehdรค sen seuraavasti:
test.jsx
import React from 'react';
import ReactDOM from 'react-dom';
class Hello extends React.Component {
render() {
return <h1>{this.props.msg}</h1>;
}
}
export default Hello;
msg attribuutti vรคlitetรครคn index.js:n komponentille seuraavasti:
import React from 'react';
import ReactDOM from 'react-dom';
import Hello from './test.jsx';
ReactDOM.render(
<Hello msg="Hello, from Guru99 Tutorials!" />,
document.getElementById('root')
);
Tรคmรค on selaimen tulos:
Tarkista myรถs: - AngularJS-opastus aloittelijoille: Opi AngularJS askel askeleelta
Komponentin elinkaari
Komponenttien elinkaari on jaettu alustus-, asennus-, pรคivitys- ja irrotusvaiheisiin.
Tรคssรค on yksityiskohtainen selitys jokaisesta komponentista.
Reactjs:n komponentilla on seuraavat vaiheet:
Alustus: Tรคmรค on komponenttien elinkaaren ensimmรคinen vaihe.
Tรครคllรค sillรค on oletusrekvisiitta ja tila alkuperรคisellรค tasolla.
Asennus: Tรคssรค vaiheessa komponentti renderรถidรครคn dom:n sisรคllรค. Altistumme seuraaville menetelmille asennustilassa.
- componentDidMount(): Tรคtรค kutsutaan myรถs, kun komponentti on juuri lisรคtty domiin.
- render(): Sinulla on tรคmรค menetelmรค kaikille luoduille komponenteille. Se palauttaa HTML-solmun.
Pรคivitykset: Tรคssรค tilassa kรคyttรคjรค on vuorovaikutuksessa domiin ja se pรคivitetรครคn. Kirjoitat esimerkiksi tekstiruutuun jotain, jolloin tilan ominaisuudet pรคivitetรครคn.
Seuraavat menetelmรคt ovat kรคytettรคvissรค pรคivitystilassa:
- shouldComponentUpdate() : kutsutaan kun komponentti pรคivitetรครคn.
- componentDidUpdate() : komponentin pรคivityksen jรคlkeen.
Irrottaminen: tรคmรค tila tulee kuvaan, kun Komponenttia ei tarvita tai sitรค ei poisteta.
Seuraavat ovat kรคytettรคvissรค olevat menetelmรคt irrotustilassa:
Komponentti willUnmount(): kutsutaan, kun komponentti poistetaan tai tuhotaan.
Toimiva esimerkki
Tรคssรค on toimiva esimerkki, joka nรคyttรครค kussakin tilassa kutsutut menetelmรคt.
Esimerkki: complife.jsx
import React from 'react';
import ReactDOM from 'react-dom';
class COMP_LIFE extends React.Component {
constructor(props) {
super(props);
this.state = {name: ''};
this.UpdateName = this.UpdateName.bind(this);
this.testclick = this.testclick.bind(this);
}
UpdateName(event) {
this.setState({name: event.target.value});
}
testclick(event) {
alert("The name entered is: "+ this.state.name);
}
componentDidMount() {
console.log('Mounting State : calling method componentDidMount');
}
shouldComponentUpdate() {
console.log('Update State : calling method shouldComponentUpdate');
return true;
}
componentDidUpdate() {
console.log('Update State : calling method componentDidUpdate')
}
componentWillUnmount() {
console.log('UnMounting State : calling method componentWillUnmount');
}
render() {
return (
<div>
Enter Your Name:<input type="text" value={this.state.name} onChange={this.UpdateName} /><br/>
<h2>{this.state.name}</h2>
<input type="button" value="Click Here" onClick={this.testclick} />
</div>
);
}
}
export default COMP_LIFE;
index.js
import React from 'react';
import ReactDOM from 'react-dom';
import COMP_LIFE from './complife.jsx';
ReactDOM.render(
<COMP_LIFE />,
document.getElementById('root')
);
Kun tarkistat tulosteen selaimessa
Selainkonsolissa saat:
Kun kรคyttรคjรค kirjoittaa tekstiruutuun:
Konsolissa nรคytetรครคn seuraavat viestit:
Lomakkeiden kanssa tyรถskentely
Reactjsissa HTML-syรถttรถelementit, kuten , ja <select /> on oma tila, ja se on pรคivitettรคvรค, kun kรคyttรคjรค on vuorovaikutuksessa setState()-metodilla.
Tรคssรค luvussa nรคemme kuinka kรคsitellรค lomakkeita reactjsissa.
Tรคssรค toimiva esimerkki:
form.jsx
import React from 'react';
import ReactDOM from 'react-dom';
class Form extends React.Component {
constructor(props) {
super(props);
this.state = {name: ''};
this.UpdateName = this.UpdateName.bind(this);
this.formSubmit = this.formSubmit.bind(this);
}
UpdateName(event) {
this.setState({name: event.target.value});
}
formSubmit(event) {
alert("The name entered is: "+ this.state.name);
}
render() {
return (
<form>
Enter Your Name:<input type="text" value={this.state.name} onChange={this.UpdateName} /><br/>
<h2>{this.state.name}</h2>
<input type="submit" value="Submit" onClick={this.formSubmit} />
</form>
);
}
}
export default Form;
Syรถtekenttiรค varten meidรคn on sรคilytettรคvรค tila, joten sitรค varten react tarjoaa erityisen menetelmรคn nimeltรค setState, joka auttaa yllรคpitรคmรครคn tilaa aina muutoksen sattuessa.
Olemme kรคyttรคneet tapahtumia onChange- ja onClick-tekstiruutua ja lรคhetรค -painiketta. Kun kรคyttรคjรค tulee tekstiruutuun, kutsutaan onChange-tapahtuma ja tilaobjektin tilan sisรคllรค oleva nimikenttรค pรคivitetรครคn alla olevan kuvan mukaisesti:
UpdateName(event) {
this.setState({name: event.target.value});
}
index.js
import React from 'react';
import ReactDOM from 'react-dom';
import Form from './form.jsx';
ReactDOM.render(
<Form />,
document.getElementById('root')
);
Tulostus selaimessa on seuraava:
Vaihe 1) Kirjoita nimesi tekstiruutuun:
- Napsauta Lรคhetรค-painiketta
Tyรถskentely tapahtumien kanssa ReactJS:ssรค
Tyรถskentely tapahtumien kanssa reactjsissa on sama kuin olisit tehnyt javascriptissรค. Voit kรคyttรครค kaikkia javascriptissรค kรคytettyjรค tapahtumakรคsittelijรถitรค. Metodia setState() kรคytetรครคn tilan pรคivittรคmiseen, kun kรคyttรคjรค on vuorovaikutuksessa minkรค tahansa HTML-elementin kanssa.
Tรคssรค on toimiva esimerkki tapahtumien kรคyttรคmisestรค reactjsissa.
Events.jsx
import React from 'react';
import ReactDOM from 'react-dom';
class EventTest extends React.Component {
constructor(props) {
super(props);
this.state = {name: ''};
this.UpdateName = this.UpdateName.bind(this);
this.testclick = this.testclick.bind(this);
}
UpdateName(event) {
this.setState({name: event.target.value});
}
testclick(event) {
alert("The name entered is: "+ this.state.name);
}
render() {
return (
<div>
Enter Your Name:<input type="text" value={this.state.name} onChange={this.UpdateName} /><br/>
<h2>{this.state.name}</h2>
<input type="button" value="Click Here" onClick={this.testclick} />
</div>
);
}
}
export default EventTest;
Syรถtekenttiรค varten meidรคn on sรคilytettรคvรค tila, joten sitรค varten react tarjoaa erityisen menetelmรคn nimeltรค setState, joka auttaa yllรคpitรคmรครคn tilaa aina muutoksen sattuessa.
Olemme kรคyttรคneet tapahtumia muutamme ja klikkaamalla tekstikentรคssรค ja painikkeessa. Kun kรคyttรคjรค tulee tekstiruutuun muutamme tapahtuma kutsutaan ja nimikenttรค tilaobjektin tilassa pรคivitetรครคn alla olevan kuvan mukaisesti:
UpdateName(event) {
this.setState({name: event.target.value});
}
index.js
import React from 'react';
import ReactDOM from 'react-dom';
import EventTest from './events.jsx';
ReactDOM.render(
<EventTest />,
document.getElementById('root')
);
Tรคssรค tuloste selaimessa:
Kun kรคyttรคjรค kirjoittaa nimen:
Kun kรคyttรคjรค napsauttaa Napsauta tรคstรค -painiketta:
Tyรถskentely Inline CSS:n kanssa ReactJS:ssรค
Tarkastellaan toimivaa esimerkkiรค ymmรคrtรครคksesi inline css:n toiminnan reactjsissa.
addstyle.jsx
import React from 'react';
import ReactDOM from 'react-dom';
const h1Style = {
color: 'red'
};
function Hello(props) {
return <h1 style={h1Style}>{props.msg}</h1>;
}
const Hello_comp = <Hello msg="Hello, from Guru99 Tutorials!" />;
export default Hello_comp;
Olen lisรคnnyt h1-tunnisteeseen vรคrin: "punainen".
index.js
import React from 'react';
import ReactDOM from 'react-dom';
import Hello_comp from './addstyle.jsx';
ReactDOM.render(
Hello_comp,
document.getElementById('root')
);
Tulostus selaimessa on seuraava:
Voit luoda elementille haluamasi tyyliobjektin ja lisรคtรค tyylin lausekkeen avulla yllรค olevan esimerkin mukaisesti.
Tyรถskentely ulkoisen CSS:n kanssa ReactJS:ssรค
Luodaan ulkoinen css , luokaa sitรค varten kansio css/ ja lisรครคkรครค siihen style.css.
style.css
.h1tag {
color:red;
}
Lisรครค style.css index.html-tiedostoosi
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>ReactJS Demo</title>
<link href="css/style.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id = "root"></div>
<script src = "out/script.min.js"></script>
</body>
</html>
Lisรคtรครคn nyt luokka h1-tunnisteeseen .jsx-tiedostossa
addstyle.jsx
import React from 'react';
import ReactDOM from 'react-dom';
let classforh1 = 'h1tag';
function Hello(props) {
return <h1 className={classforh1}>{props.msg}</h1>;
}
const Hello_comp = <Hello msg="Hello, from Guru99 Tutorials!" />;
export default Hello_comp;
index.js
import React from 'react';
import ReactDOM from 'react-dom';
import Hello_comp from './addstyle.jsx';
ReactDOM.render(
Hello_comp,
document.getElementById('root')
);
Attribuutille className annetaan luokan tiedot. Testataan nyt selaimessa.
Tรคmรคn nรคet, kun tarkistat h1-tunnisteen selaimessa:
Voit nรคhdรค, ettรค class=โ h1tagโ on lisรคtty onnistuneesti h1-tunnisteeseen.
Yhteenveto
- ReactJS on avoimen lรคhdekoodin kรคyttรถliittymรค JavaSkriptikirjasto kรคyttรถliittymรคn rakentamiseen. Sitรค yllรคpitรครค Facebook, ja monet yritykset kรคyttรคvรคt sitรค nykyรครคn kรคyttรถliittymรคn kehittรคmiseen.
- ReactJS:n ydinominaisuudet sisรคltรคvรคt JSX:n, komponentit (toiminnalliset komponentit ja luokkapohjaiset komponentit), komponentin elinkaaren, rekvisiitta ja tilan tuen komponentille, javascript-lausekkeiden kanssa.
- ReactJS:n projektin asennus selitetรครคn kรคyttรคmรคllรค CDN-tiedostoja ja myรถs npm-paketteja projektin rakentamiseen.
- JSX on javascriptin laajennus. Se on malliskripti, jossa voit kรคyttรครค HTML- ja javascriptiรค yhdessรค.
- Komponentit ovat kuin puhtaita javascript-funktioita, jotka tekevรคt koodista helppoa jakamalla logiikan uudelleen kรคytettรคvรคksi itsenรคiseksi koodiksi.
- Tila on JavaScript-objekti, joka on samanlainen kuin rekvisiitta, jossa on dataa kรคytettรคvรคksi reactjs-renderรถinnin kanssa. Tilatieto on yksityinen objekti ja sitรค kรคytetรครคn luokan sisรคllรค.
- Props ovat ominaisuuksia, joita kรคytetรครคn komponentin sisรคllรค.
- Komponenttien elinkaari on jaettu alustus-, asennus-, pรคivitys- ja irrotusvaiheisiin.
- Reactjs:ssa html-syรถteelementit kuten , ja <select /> on oma tila, ja se on pรคivitettรคvรค, kun kรคyttรคjรค on vuorovaikutuksessa setState()-metodilla.
- Tyรถskentely tapahtumien kanssa reactjsissa on sama kuin olisit tehnyt javascriptissรค. Voit kรคyttรครค kaikkia javascriptissรค kรคytettyjรค tapahtumakรคsittelijรถitรค. Metodia setState() kรคytetรครคn tilan pรคivittรคmiseen, kun kรคyttรคjรค on vuorovaikutuksessa minkรค tahansa HTML-elementin kanssa.
- ReactJS:n avulla voit tyรถskennellรค sekรค ulkoisen css:n ettรค sisรคisen css:n kanssa JavaScript-lausekkeen avulla.
Tarkista myรถs: - 70 suosituinta React-haastattelun kysymystรค ja vastausta (pรคivitetty)























