亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 網站 > WEB開發 > 正文

從0開始學 react

2024-04-27 15:04:07
字體:
來源:轉載
供稿:網友

1 webpack

mkdir chong0kaishixuereactcd chong0kaishixuereactnpm initnpm install webpack --save-devnpm install -save-dev babel-core babel-loader babel-PReset-es2015 babel-preset-reactnpm install --save react react-domtouch index.htmltouch component/component1.jstouch main.js ```

cat webpack.config.js

var config = { entry: './main.js', output: { path:__dirname, filename: 'index.js', }, devServer: { inline: true, port: 3000 }, module: { loaders: [ { test: //.js?$/, exclude: /node_modules/, loader: 'babel-loader', query: { presets: ['es2015', 'react'] } }] }}

cat main.js

import React from 'react';import ReactDOM from 'react-dom';import Component1 from './component/component1'; ReactDOM.render(<Component1 />, document.getElementById('index'))

cat index.html

<!DOCTYPE html><html> <head> <meta charset = "UTF-8"> <title>React App </title> </head> <body> <div id = "index"></div> </body></html> <script src = "index.js"></script>

cat component/component1.js

import React from 'react';export default class Component1 extends React.Component { render() { return ( <div> Hello <br /> component1 </div> ); }}

進入項目根目錄

webpack 輸出 index.js文件

然后運行 npm start

瀏覽器顯示 “component1” 調用組件成功

問題1 調試發現,npm start能編譯通過,但WEB空白,中間的錯在終端看不出,

解決方法,在Chrome devtools 中查

問題2 為何直接 npm start 不能編譯成 index.js? 但這個時候沒有index.js , index.html 顯示還是正常的

2 ES6

1 箭頭函數

cat component/component1.js

import React from 'react';export default class Component1 extends React.Component { render() { //最簡單的 function,一個參數 a var foo = a => a ; console.log(foo('hihi')); //沒有參數的直接是空括號 var foo2 =() =>{ alert('haha'); } foo2(); //多個參數要用到小括號,參數間逗號間隔,例如兩個數字相加 var add = (a,b) => a+b; console.log(add(1,2)); //返回對象時需要用小括號包起來,因為大括號被占用為代碼塊了 var getHash =() =>{ return( { name:'zhangsan', age:10 }); }; console.log(getHash()); //點擊事件, document.addEventListener('click',event=>{console.log(event);}); return ( <div> <br /> component1 </div> ); }}

3 類class

vi employee.js

class Employee{ //構造 function constructor(id,name,job){ this.id = id; this.name = name; this.job = job; } //注意,上面無分號間隔 getMessage(){ return this.id + "=>" + this.name +"=>" +this.job; }} //export 是導出類,其他地方可以直接 import 這個類 //default 只能用一次,是只是當前頁用一次,還是其他頁也不能用了? export default Employee;

vi component/component1.js

import React from 'react';import Employee from '../employee.js';export default class Component1 extends React.Component { render() { var e1 = new Employee('001','jack','cooker'); console.log(e1.getMessage()); return ( <div> <br /> component1 </div> ); }}

常量const和 let 聲明

vi component/component1.js

import React from 'react';import Employee from '../employee.js';export default class Component1 extends React.Component { render() { var e1 = new Employee('001','jack','cooker'); console.log(e1.getMessage()); // {// let a = 10;// var b = 11;// }// console.log(a);// console.log(b);for(let i =0;i<10;i++){}for(var k=0;k<10;k++){}//console.log(i);console.log(k); return ( <div> <br /> component1 </div> );}}

JSX

cat main.js

import React from 'react';import ReactDOM from 'react-dom';import Component1 from './component/component1';import Component2 from './component/component2'; // ReactDOM.render(<Component2 />, document.getElementById('index2')) //ReactDOM.render(<Component1 />, document.getElementById('index'))// ReactDOM.render(// <div>// <h1>{1+1}</h1>// </div>// ,// document.getElementById('index')// ); var arr =[ <h1> hi</h1>, <h2> react is awesome</h2> ]; ReactDOM.render( <div>{arr}</div>,document.getElementById('index'));

notice:

Warning: Each child in an array or iterator should have a unique "key" prop. Check the top-level render call using <div>. See https://fb.me/react-warning-keys for more information. in h1 我網上查了下,知道是要用 key,但查的例子沒辦法參考 ,暫時略過,各位留意這里的優化和提高,我自己也要注意以后改正

props和省略號語法

vi component/component2.js

import React,{Component} from 'react';import ReactDOM from 'react-dom';// class Component2 extends React.Component {// render() {// // //最簡單的 function,一個參數 a// // var foo = a => a ;// // console.log(foo('hihi'));// // //沒有參數的直接是空括號// // var foo2 =() =>{// // alert('haha');// // }// // foo2();// // //多個參數要用到小括號,參數間逗號間隔,例如兩個數字相加// // var add = (a,b) => a+b;// // console.log(add(1,2));// // //返回對象時需要用小括號包起來,因為大括號被占用為代碼塊了// // var getHash =() =>{// // return(// // {// // name:'zhangsan',// // age:10// // });// // };// // console.log(getHash());// // //點擊事件,// // document.addEventListener('click',event=>{console.log(event);});// return (// <div>// Component2<br />// </div>// );// }// }//聲明一個組件類,叫 MyTitleclass Component2 extends Component{ show(){ console.log(this.props.title); console.log(this.props.contents); console.log(this.props.name); } //渲染組件:一個按鈕,并可以點擊 //注意 bind(this)的寫法,這是 JSX 語法要的 //如果怕麻煩也可以用箭頭 function render(){ return(<button onClick={this.show.bind(this)}>click</button>); }}//要向組件傳遞的數據 var data ={ title:'this is a little', contents:'this is contents'};ReactDOM.render(<Component2 {...data} name ={'my name'} />,document.getElementById('index'));export default Component2;

這里寫圖片描述 步驟是:1 聲明組件: ES6的類聲明 2 渲染組件: render用法 渲染方法包括兩個參數,一個是組件名稱,一個是頁面的 id,進一步得想,index.html可以有多個 id嗎?不同的 component可以定位不同的 id,然后在 index.html上顯示嗎?還是main.js是一個大的組件,由很多小組件組合而成, 這就不是 SPA了,多頁面這里如何處理

this.props.children

cat component/NodeList.js

'use strict';import React,{Component} from 'react';import ReactDOM from 'react-dom';//聲明一個組件類,叫 NodeListclass NodeList extends Component{ render(){ return( <ul> { //遍歷 this.props.children 節點 React.Children.map(this.props.children,function(child){ return(<li>{child}</li>); }) } </ul> ); <NodeList><span> hello</span><span> world</span></NodeList>; }}export default NodeList;

cat main.js

import React,{Component} from 'react';import ReactDOM from 'react-dom'; import NodeList from './component/NodeList'; ReactDOM.render(<NodeList><span> hello</span><span> world</span></NodeList> ,document.getElementById('index'));i

state狀態機 和 refs

cat component/inputstate2.js

'use strict';import React,{Component} from 'react';import ReactDOM from 'react-dom';//聲明一個組件類,叫 Searchclass Search extends Component{ checkSth(){ var inputValue = this.refs.myInput.value; alert(inputValue); } render(){ return(<div><input type = "text" ref="myInput" /><button onClick ={this.checkSth.bind(this)}>獲取內容</button></div> ); }}// ReactDOM.render(// document.getElementById('index')// );export default Search;

cat main.js

import React,{Component} from 'react';import ReactDOM from 'react-dom';import Search from './component/inputstate2'; ReactDOM.render(<Search/> ,document.getElementById('index'));![這里寫圖片描述](http://img.blog.csdn.net/20170204145612982?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2lyZW5j/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)#綜合案例cat component/box.js 'use strict';import React,{Component} from 'react';import ReactDOM from 'react-dom';//小部件,渲染為 UL 列表class Items extends Component{ render(){ var arrLi =[]; for(let i=0;i<this.props.info.length;i++){ //注意,這不是拼接字符串 arrLi.push(<li key={i}> {this.props.info[i]}</li>); } return(<ul>{arrLi}</ul>); }}//大部件class Box extends Component{ constructor(props){ super(props); this.state ={ list:this.props.sourceData } } checkSth(){ var arr=[]; //獲取文本信息 var inputValue = this.refs.myInput.value; //獲取 props 信息 var sourceData = this.props.sourceData; //選擇數據 for(let i=0;i<sourceData.length;i++){ if(sourceData[i].indexOf(inputValue)!= -1){ arr.push(sourceData[i]); } } //更新狀態機 this.setState({list:arr}); } render(){ return( <div><input type="text" ref="myInput" onKeyUp={this.checkSth.bind(this)} /><Items info={this.state.list} /></div> ); }};export default Box;

cat main.js

import React,{Component} from 'react';import ReactDOM from 'react-dom';import Box from './component/Box'; var data = ['jackson','milly','john smith','make','denny','emili','jenny']; ReactDOM.render(<Box sourceData={data}/> ,document.getElementById('index'));

這里寫圖片描述


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲福利在线播放| 亚洲男人的天堂在线| 国产高清视频一区三区| 国产精品亚洲欧美导航| 亚洲国产成人在线播放| 国产美女精品视频| 色综合久久中文字幕综合网小说| 91久久精品视频| 欧美成人高清视频| 欧美黑人又粗大| 精品国产91乱高清在线观看| 亚洲第一网中文字幕| 黄色精品在线看| 欧美福利小视频| 国产亚洲综合久久| 丝袜情趣国产精品| 91香蕉电影院| 日韩在线www| 亚洲一区二区免费在线| 亚洲国产中文字幕在线观看| 韩国三级电影久久久久久| 亚洲男人av在线| 亚洲美女动态图120秒| 97视频在线观看成人| 在线看片第一页欧美| 亚洲欧洲在线免费| 中文字幕亚洲一区| 成人a在线观看| 伦理中文字幕亚洲| 91在线无精精品一区二区| 国产精品久久视频| 欧美情侣性视频| 亚洲一区制服诱惑| 成人免费视频在线观看超级碰| 国产精品久久久久影院日本| 国产精品久久999| 国产精品久久久久久久电影| 亚洲国产日韩欧美在线99| 欧美精品在线观看| 91久久综合亚洲鲁鲁五月天| 国产91精品最新在线播放| 亚洲国产精品久久久久久| 亚洲免费福利视频| 中国人与牲禽动交精品| 97久久精品人人澡人人爽缅北| 2021国产精品视频| 成人黄色片网站| 国产精品香蕉国产| 国产自摸综合网| 日韩福利伦理影院免费| 久久久久久久久中文字幕| 91精品视频大全| 国产精品一久久香蕉国产线看观看| 久久久久久久av| 不卡伊人av在线播放| 成人精品久久一区二区三区| 91精品久久久久久久久中文字幕| 亚洲天堂免费在线| 亚洲国产美女久久久久| 精品一区精品二区| 国产在线98福利播放视频| 欧美成人激情在线| 亚洲图片欧美日产| 这里只有精品视频| 日韩电影中文字幕在线| 欧美一级大片视频| 欧美资源在线观看| 综合网日日天干夜夜久久| 久久久久久久久久久网站| 国产日韩欧美中文| 欧美成年人在线观看| 日韩av男人的天堂| 91久久精品日日躁夜夜躁国产| 成人妇女淫片aaaa视频| 久久成人18免费网站| 日韩av网站导航| 久久久久久国产| 国产精品一香蕉国产线看观看| 亚洲2020天天堂在线观看| 国产精品久久综合av爱欲tv| 成年无码av片在线| 日韩成人激情在线| 97视频在线观看亚洲| 欧美精品久久久久久久久久| 最近日韩中文字幕中文| 亚洲aⅴ日韩av电影在线观看| 奇米一区二区三区四区久久| 国产精品第100页| 欧美壮男野外gaytube| 中文字幕亚洲无线码在线一区| 国产精品视频1区| 国产亚洲精品日韩| 亚洲精品av在线| 萌白酱国产一区二区| 欧美精品videossex性护士| 亚洲自拍偷拍视频| 国产精品欧美激情| 国产精品久久久久aaaa九色| 国产成人精品免费视频| 欧美视频一二三| 亚洲综合成人婷婷小说| 亚洲乱码一区av黑人高潮| 国产精品精品一区二区三区午夜版| 国产精品成人免费电影| 国产精品一区二区久久久| 欧美在线播放视频| 成人精品网站在线观看| 国产精品影片在线观看| 国产主播精品在线| www.日韩免费| 亚洲欧洲第一视频| 成人高清视频观看www| 高清一区二区三区四区五区| 成人欧美一区二区三区黑人孕妇| 欧美激情久久久| 国产精品一区二区三区成人| 91九色视频导航| 欧美成人午夜免费视在线看片| 久久免费高清视频| 亚洲国产精品va在线| 在线视频欧美日韩| 91国产一区在线| 日韩高清电影免费观看完整| 最近免费中文字幕视频2019| 亚洲欧美日韩中文视频| 日韩精品免费电影| 中文字幕日韩欧美在线视频| 欧美精品一区二区免费| 69视频在线免费观看| 色偷偷偷综合中文字幕;dd| 欧洲精品在线视频| 91日本在线视频| 91在线视频导航| 丝袜亚洲另类欧美重口| 国产精品99久久久久久久久久久久| 色综合久久精品亚洲国产| 日本91av在线播放| 久久精品影视伊人网| 国产成人免费av电影| 久久精品国产久精国产思思| 亚洲人精品午夜在线观看| 亚洲精品福利在线观看| 日韩美女视频免费看| 精品在线小视频| 国内精品一区二区三区| 日本亚洲欧洲色α| 粉嫩老牛aⅴ一区二区三区| 秋霞午夜一区二区| 7777kkkk成人观看| 97成人精品视频在线观看| 国产精品第三页| 亚洲网站在线播放| 久久久精品免费视频| 在线观看视频99| 欧美伊久线香蕉线新在线| 欧洲日韩成人av| 日韩av免费看网站| 日韩成人中文字幕| 成人福利网站在线观看11| 国产精品欧美激情在线播放| 亚洲第一男人av| 中文字幕欧美精品在线| 久久99国产精品自在自在app| 欧美电影免费播放|