內容
intro
install
page setup
react elements
reactdom
react component
react factories
names abstract:
react.createelement()
,reactdom.render()
,react.component
,reactdomfactories
可用於建立原生的移動應用,瀏覽器只是 react 執行環境之一
主要優點:可將資料與ui元素隔離
至少在html引入以下兩庫才可使用
// facebook cdn
// facebook cdn
react 元素是表示應如何建立瀏覽器 dom 的一組指令
react.createelement("h1", , "baked salmon")
渲染過程中,react 將上述建立的元素轉為實際的dom元素
createelement()
方法實際建立了:
,
// data which used to build a dom element
props: object ,
}
在瀏覽器中渲染react元素的工具箱 如建立h1
之後可通過render()
將其設為子元素
var dish = react.createelement("h1", null, "baked salmon")
reactdom.render(dish, document.getelementbyid('react-container'))
render()
方法渲染時會在現有元素上更新,追加新增元素,而不是重新渲染一遍,這使得 react 高效
react 通過props.children
渲染子元素
建立乙個列表:
var step = react.createelement("ul", null,
react.createelement("li", null, "1lb salmon"),
react.createelement("li", null, "1 cup pine nuts"),
)
通過資料結構建立無序列表:
var steps = ['step1', 'step2', 'step3']
var s = react.createelement(
"ul",
,steps.map((step, i) => react.createelement("li", , step))
)reactdom.render(s, document.getelementbyid('react-container'))
⚠️
屬性應加上key
,否則會控制台警告,key
可幫助 react 高效更新元素
⚠️ 由於class
是 js 中的保留關鍵字,因此用classname
----- 可復用的,dom結構相同的零部件
react.component
是乙個重要抽象類,相容es6,可用於建立元件
建立乙個菜品所需食材的無序列表:
class ingredientslist extends react.component ,
this.props.items.map(
(ingredient, i) => react.createelement("li", , ingredient)))
}}
元件即物件,可以將map
裡的箭頭函式封裝為renderlistitem
,
class ingredientslist extends react.component , ingredient)
}render() ,
this.props.items.map(this.renderlistitem))}
}
無狀態函式式元件stateless functional components由函式組成,接受屬性後返回乙個dom物件,**簡潔,易於測試,簡化架構
const ingredientslist = props =>
react.createelement("ul", ,
props.items.map(
(ingredient, i) => react.createelement("li", , ingredient)))
以上三種方式呼叫方法相同:
const items = [
"1 lb salmon",
"1 cup pine nuts",
"2 cups butter lettuce",
"1 yellow squash",
"1/2 cup olive oil",
"3 cloves of garlic"
]reactdom.render(
react.createelement(ingredientslist, , null),
document.getelementbyid("react-container")
)
一種封裝例項化物件的細節的特殊物件reactdomfactories
⚠️ 也可直接引入其庫
使用時,第一入參是屬性,第二入參是內容
const el = react.dom.h1(null, "baked salmon") // react
const el = reactdomfactories.h1(null, "baked salmon") // react-dom-factories
reactdom.render(el, document.getelementbyid('react-container'))
通過createfactory()
顯式建立工廠類
const ingredientlist = () =>
react.createelement("ul", null,
items.map((ingredient, i) =>
react.createelement("li", , ingredient)))
const ingredients = react.createfactory(ingredientlist)
reactdom.render(
ingredients(),
document.getelementbyid('react-container')
)
ingredients 是乙個函式,可直接呼叫建立元素
this is end -------------------------本文獻給頭號粉絲@mmmay 及 13k 殭屍粉大軍........文章若有誤人子弟之處,望及時指正,必有重謝!
React 封裝路由
封裝路由import movie from views movie import cinema from views cinema import mine from views mine import city from views city import search from views sea...
react專案的axios封裝
分享乙個 react axios 的元件封裝 請求 帶token放請求頭 import axios from axios import qs from qs import from antd import cookies from js cookie export default function ...
react路由使用以及封裝
yarn add react router dom or,if you re not using yarn npm install react router dom 路由對應官網 在目錄container下新建兩個檔案,home.js和detail.js import react from reac...