REACT實(shí)現(xiàn)簡(jiǎn)單的登錄界面

1. 概述

1.1. 概述

這周一直在焦灼于React的知識(shí)儲(chǔ)備,一直沒(méi)想明白,React寫(xiě)前端,又不是和后臺(tái)分離,這該怎么搭建項(xiàng)目。難道每次都要在命令行界面編譯一下React那部分的代碼嗎?這想想就覺(jué)得不科學(xué),但那要怎么辦?像引入kendoui那樣引入react嗎?唉~這些暫且不需要我考慮的東西就先別糾結(jié)了。鑒于下一個(gè)任務(wù)是做一個(gè)注冊(cè)界面,現(xiàn)在就先練練,做一個(gè)登錄界面瞧瞧吧

1.2.ES5 ES6寫(xiě)法對(duì)照

1.2.1 ES5

①引入方式:

通過(guò) require 引入外部模塊:

var React = require("react"); 

②導(dǎo)出方式:

通過(guò)module.exports導(dǎo)出:

module.exports = Test; 

③創(chuàng)建組件的方式

使用React.createClass() 小括號(hào)里面需要大括號(hào)

//ES5

var Test = React.createClass( {

..........

} );

④初始化組件屬性的方式以及限制組件屬性類(lèi)型的方式

通常使用propTypes成員和getDefaultProps方法來(lái)實(shí)現(xiàn)

//ES5  

var Test = React.createClass({  

      getDefaultProps: function() {  

             **return** {  

                   myPro: 10  

             };  

      },  

      propTypes: {  

             myPro: React.PropTypes.number. isRequired  

      }  

});  

⑤初始化方法

getInitialState: function() {  

      ...........  

      **return** {  

           myState: 10  

      }  

} 

⑥ES5中每個(gè)方法之后都需要加上一個(gè)逗號(hào),而且需要用 render: function()這樣的寫(xiě)法

⑦變量聲明

ES5中聲明變量只有兩種方法:var和function;

1.2.2 ES6

①引入方式:

通過(guò)import導(dǎo)入外部模塊:

import React, { Component, PropTypes } from 'react 

②導(dǎo)出方式:

通過(guò)exports導(dǎo)出:

export default Test; 

③創(chuàng)建組件的方式

繼承自React框架的Component(需要導(dǎo)入),只需要一個(gè)大括號(hào)

//ES6  

class Test extends Component {  

       ..........  

}  

④初始化組件屬性的方式以及限制組件屬性類(lèi)型的方式

可以統(tǒng)一使用static成員。(也可以用ES5方法)

//ES6  

class Test extends Component {  

       static defaultProps = {  

             myPro: 10  

       };  

       static propTypes = {  

             myPro: React.PropTypes.number. isRequired  

       };  

} 

⑤初始化方法

state = {  

      myState: 10  

}

因?yàn)镋S6直接使用state初始化不能進(jìn)行一些其它的運(yùn)算,所以也經(jīng)常這樣:

constructor(props){  

        super(props);  

       this.state = {  

            myState: 10  

        };  

    } 

⑥ES中每個(gè)方法之后不需要加逗號(hào),方法也可以直接用render(),直接在名字后加括號(hào)和形參

⑦變量聲明

ES6中聲明變量的方式:var、function、let、const、import和class命令

1.2.3 ES6新增

① ES6新增了let命令,用來(lái)聲明變量。它的用法類(lèi)似于var,但是所聲明的變量,只在let命令所在的代碼塊內(nèi)有效。(塊級(jí)作用域)

{

 var a = 1;

 let b = 1;

 }

 a;//有效

 b;//無(wú)效

let不像var存在變量提升,即變量一定要聲明之后才能使用


image.png

② const命令

const用來(lái)聲明常量。一旦聲明,其值就不能改變。這意味著,const一旦聲明常量,就必須立即初始化。const同let命令同樣只在當(dāng)前塊級(jí)作用域中有效,存在“暫時(shí)性死區(qū)”。

ECMAScript在對(duì)變量的引用進(jìn)行讀取時(shí),會(huì)從該變量對(duì)應(yīng)的內(nèi)存地址所指向的內(nèi)存空間中讀取內(nèi)容,而當(dāng)用戶改變變量的值時(shí),引擎會(huì)重新從內(nèi)存中分配一個(gè)新的內(nèi)存空間以存儲(chǔ)新的值,并將新的內(nèi)容地址與變量進(jìn)行綁定。const的原理便是在變量名與內(nèi)存地址之間建立不可變的綁定,當(dāng)后面的程序嘗試申請(qǐng)的內(nèi)存空間時(shí),引擎便會(huì)拋出錯(cuò)誤。

③變量的結(jié)構(gòu)賦值

var [a, b, c] = [1, 2, 3];

let [foo, [[bar], baz]] = [1 [[2], 3]];

對(duì)象的解構(gòu)賦值的內(nèi)部機(jī)制,是先找到同名的內(nèi)部屬性,然后再賦值給對(duì)象的變量。真正被賦值的是后者,而不是前者。

var {foo: baz} = {foo: "aaa"};

baz; // "aaa"

foo; // error: foo is not defined

④字符串的解構(gòu)賦值

var [a, b, c, d, e] = ‘hello‘;

a; // ‘h‘

e; // ‘o‘

⑤函數(shù)參數(shù)的解構(gòu)賦值

function add([x, y]){

 return x + y;

}

add([1, 2]);

⑥默認(rèn)值

var {x, y = 5} = {x: 1};

x; // 1

y; // 5

注意:ES6內(nèi)部使用嚴(yán)格相等“===”判斷一個(gè)位置是否有值。所以,不嚴(yán)格等于undefined,默認(rèn)值是不會(huì)生效的。

var {x = 3} = {x: undefined};

x; // 3

var {x = 3} = {x: null};

x; // null

2. 項(xiàng)目實(shí)現(xiàn)

2.1. 新建項(xiàng)目

新建:

$ mkdir login-demo && cd login-demo

初始化:

$ npm init (會(huì)有一些項(xiàng)目配置需要你輸入,一直敲回車(chē)就行了)

2.2. 新建其他文件

2.2.1新建/src/index.js

import './index.less';

import React from 'react';

import ReactDOM from 'react-dom';

import Login from './Containers/Login';

document.addEventListener('DOMContentLoaded', function () {

 ReactDOM.render(

 React.createElement(Login),

 document.getElementById('mount')

 );

});

2.2.2在src下新建文件夾Containers/Login

新建index.js

import React from 'react';

import Form from './Form';

import Layout from './Layout';

import Background from './Background';

export default function Login() {

 return (

 <span>

 <Background />

 <Layout>

 <Form />

 </Layout>

 </span>

 )

}
image.png
image.png

image.png
image.png
image.png

3.運(yùn)行項(xiàng)目

以此執(zhí)行命令: npm install

npm start

最后打開(kāi)http://localhost:3000

image.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容