摘要:是程序的入口文件自動(dòng)化測(cè)試定義組件擴(kuò)大點(diǎn)擊區(qū)域虛擬的生成數(shù)據(jù)模板數(shù)據(jù)模板生成虛擬虛擬就是一個(gè)對(duì)象,用它來(lái)描述真實(shí)損耗了性能用虛擬的結(jié)構(gòu)生成真實(shí)的來(lái)顯示發(fā)生變化數(shù)據(jù)模板生成新的虛擬極大提升了性能數(shù)據(jù)更新比較原始虛擬和新的虛擬的區(qū)別找到區(qū)別極大
Index.js是程序的入口文件
PWA progressive web application
(registerServiceWorker)
App.test.js自動(dòng)化測(cè)試
定義組件:
class App extends React.component
Label:擴(kuò)大點(diǎn)擊區(qū)域
虛擬dom的生成1.state數(shù)據(jù)
2.jsx模板
3.數(shù)據(jù)+模板 生成虛擬dom(虛擬dom就是一個(gè)js對(duì)象,用它來(lái)描述真實(shí)dom 損耗了性能)
[‘div’,{id:’abc’},[‘span’,{},’hello’]]
4.用虛擬dom的結(jié)構(gòu)生成真實(shí)的dom 來(lái)顯示
hello
5.state發(fā)生變化
6.數(shù)據(jù)+模板 生成新的虛擬dom(極大提升了性能)
(數(shù)據(jù)更新)
7.比較原始虛擬dom和新的虛擬dom的區(qū)別 找到區(qū)別(極大提升了性能)
8.直接操作dom 改變span中的內(nèi)容
優(yōu)點(diǎn):
1.性能提升
2.使得跨端應(yīng)用得以實(shí)現(xiàn) react native
比對(duì)原始虛擬dom和新的虛擬dom之間的差異
提高了比對(duì)的性能
同層比對(duì) key值
setState是一個(gè)異步函數(shù),console.log先于執(zhí)行
setState({…},()=>{
console.log(…)
})
生命周期函數(shù)?
constructor組件創(chuàng)建的時(shí)候被調(diào)用 不屬于生命周期
componentWillMount:在組件即將被掛載到頁(yè)面的時(shí)刻自動(dòng)執(zhí)行
Render:頁(yè)面重新渲染
componentDidMount:組件被掛載到頁(yè)面之后,自動(dòng)執(zhí)行
updation:
shouldComponentUpdate:組件被更新之前,會(huì)自定被執(zhí)行(return false不對(duì)組件進(jìn)行更新)
接收兩個(gè)參數(shù) nextProps nextState
componentWillUpdate:組件被更新之前,會(huì)被自動(dòng)執(zhí)行,在shouldComponentUpdate之后才執(zhí)行(返回true才執(zhí)行)
shouldComponentUpdate-》componentWillUpdate-》Render-》componentDidMount
componentWillReciveProps:當(dāng)一個(gè)組件從父組件接收了參數(shù) 只要父組件的render函數(shù)被重新執(zhí)行了 子組件的這個(gè)生命周期函數(shù)就會(huì)被執(zhí)行(child)
如果這個(gè)組件第一次存在于父組件中,是不會(huì)被執(zhí)行的
如果之前已經(jīng)存在與父組件中,才會(huì)被執(zhí)行
componentWillUnmount:當(dāng)這個(gè)組件即將被從頁(yè)面中剔除的時(shí)候,會(huì)被執(zhí)行 (child)
componentDidMount
如果放在render會(huì)造成死循環(huán)(render會(huì)被不斷觸發(fā)執(zhí)行)
?
redux=reducer+flux
?
import store from "./store/index"
this.setState(store.getState())
import {createStore} from "redux"; import reducer from "./reducer"; const store = createStore(reducer,window.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__()); export default store;actionCreators
import {CHANGE_INPUT_VALUE,ADD_TODO_ITEM,DELECT_TDO_ITEM} from "./actionTypes" export const getInputChangeAction = (value)=>({ type:CHANGE_INPUT_VALUE, value }) export const getAddItemAction = (value)=>({ type:ADD_TODO_ITEM }) export const getDelectItemAction = (index)=>({ type:DELECT_TDO_ITEM, index })actionTypes
export const CHANGE_INPUT_VALUE = "change_input_value" export const ADD_TODO_ITEM ="add_todo_item" export const DELECT_TDO_ITEM="delect_todo_item"reducer
import {CHANGE_INPUT_VALUE,ADD_TODO_ITEM,DELECT_TDO_ITEM} from "./actionTypes" const defaultState = { inputValue:"", list:["zwt","wollen"] }//定義倉(cāng)庫(kù)的默認(rèn)數(shù)據(jù) //reducer可以接受state 但是絕對(duì)不能修改state //reducer是春函數(shù) :給定固定的輸入 就一定有固定的輸出 //不能使用雷士date的操作 export default (state = defaultState,action)=>{ if(action.type === CHANGE_INPUT_VALUE){ const newState = JSON.parse(JSON.stringify(state)) newState.inputValue = action.value return newState; } if(action.type === ADD_TODO_ITEM){ const newState = JSON.parse(JSON.stringify(state)) newState.list.push(newState.inputValue) newState.inputValue = "" return newState; } if(action.type === DELECT_TDO_ITEM){ const newState = JSON.parse(JSON.stringify(state)) newState.list.splice(action.index,1) return newState; } return state } //state:整個(gè)倉(cāng)庫(kù)存儲(chǔ)的數(shù)據(jù)內(nèi)容 //action:
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/108605.html
摘要:入門學(xué)習(xí)筆記整理一搭建環(huán)境入門學(xué)習(xí)筆記整理二簡(jiǎn)介與語(yǔ)法入門學(xué)習(xí)筆記整理三組件入門學(xué)習(xí)筆記整理四事件入門學(xué)習(xí)筆記整理五入門學(xué)習(xí)筆記整理六組件通信入門學(xué)習(xí)筆記整理七生命周期入門學(xué)習(xí)筆記整理八入門學(xué)習(xí)筆記整理九路由React 入門學(xué)習(xí)筆記整理(一)——搭建環(huán)境 React 入門學(xué)習(xí)筆記整理(二)—— JSX簡(jiǎn)介與語(yǔ)法 React 入門學(xué)習(xí)筆記整理(三)—— 組件 React 入門學(xué)習(xí)筆記整理(...
摘要:選擇的主要原因大概是因?yàn)樵摽蚣艹霈F(xiàn)較早,感覺(jué)上會(huì)相對(duì)成熟,日后學(xué)習(xí)中遇到問(wèn)題想要查找答案相對(duì)簡(jiǎn)單一些,對(duì),就是這么簡(jiǎn)單。多說(shuō)無(wú)益,接下來(lái)開(kāi)始的學(xué)習(xí),我按照我學(xué)習(xí)中帶著的問(wèn)題來(lái)一一解答,完成我的入門筆記。主要是針對(duì)前端的組件化開(kāi)發(fā)。 這兩天得空,特意來(lái)折騰了以下時(shí)下火熱的前端框架react,至于為什么選react,作為一個(gè)初學(xué)者react和vue在技術(shù)上的優(yōu)劣我無(wú)權(quán)評(píng)論,也就不妄加評(píng)論了...
摘要:環(huán)境配置新版的要求統(tǒng)一使用作為的編譯工具,因此我們選擇,新建文件,內(nèi)容如下設(shè)置候選版本為和這里因?yàn)橐玫剑园言诤蜻x版本里加入對(duì)的支持組件里引入的組件這個(gè)概念里的組件就像,里的控件一樣,能方便快捷的作為界面的一部分實(shí)現(xiàn)一定功能,我們可以 環(huán)境配置 新版的React要求統(tǒng)一使用babel作為JSX的編譯工具,因此我們選擇babel,新建.babelrc文件,內(nèi)容如下 { pre...
摘要:架構(gòu)小白入門筆記是提出的一種處理前端數(shù)據(jù)的架構(gòu),學(xué)習(xí)就是學(xué)習(xí)它的思想。這個(gè)筆記是我在學(xué)習(xí)了阮一峰老師的架構(gòu)入門教程之后得出,里面的例子和部分原文來(lái)自于其不同在于我用將其改寫了,并加入了注釋。 Flux架構(gòu)小白入門筆記 Flux是facebook提出的一種處理前端數(shù)據(jù)的架構(gòu),學(xué)習(xí)Flux就是學(xué)習(xí)它的思想。 這個(gè)筆記是我在學(xué)習(xí)了阮一峰老師的Flux 架構(gòu)入門教程之后得出,里面的例子和部分原...
摘要:編程書(shū)籍的整理和收集最近一直在學(xué)習(xí)深度學(xué)習(xí)和機(jī)器學(xué)習(xí)的東西,發(fā)現(xiàn)深入地去學(xué)習(xí)就需要不斷的去提高自己算法和高數(shù)的能力然后也找了很多的書(shū)和文章,隨著不斷的學(xué)習(xí),也整理了下自己的學(xué)習(xí)筆記準(zhǔn)備分享出來(lái)給大家后續(xù)的文章和總結(jié)會(huì)繼續(xù)分享,先分享一部分的 編程書(shū)籍的整理和收集 最近一直在學(xué)習(xí)deep learning深度學(xué)習(xí)和機(jī)器學(xué)習(xí)的東西,發(fā)現(xiàn)深入地去學(xué)習(xí)就需要不斷的去提高自己算法和高數(shù)的能力然后...
閱讀 891·2021-10-13 09:39
閱讀 1480·2021-10-11 10:57
閱讀 2589·2019-08-26 13:53
閱讀 2538·2019-08-26 12:23
閱讀 3680·2019-08-23 18:30
閱讀 3744·2019-08-23 18:08
閱讀 2523·2019-08-23 18:04
閱讀 2958·2019-08-23 16:28