React學習分享(二)
各位好,上一篇文章我們介紹了React基礎元素的使用和JSX等一些知識,現在我們繼續來學習React。
元件
元件的概念想必大家都已經明白,就是一些常用功能的模組化,可以大大提高專案構建速度。並且元件將UI分割成獨立的、可重用的部分,並將問題集中到一個地方。
從概念上來講,React的元件有些像JS的Function,舉個例子:
function Welcome(props) {
return <h1>Hello, {props.name}</h1>;
}
看起來和函式一模一樣。下面我們用ES6的Class來建立元件:
class Welcome extends React.Component {
render() {
return <h1>Hello, {this.props.name}</h1>;
}
}
將兩個元件渲染在頁面之後,在視覺效果上完全一樣,但是後者具有更多的特性,我們後面再詳細討論。
注意:元件名稱一定要以大寫字母開頭。
渲染元件
在上一篇文章中,我們介紹了React element可以代表一個標籤:
const element = <h1>Hello, world</h1>;
其實她也可以代表一個元件:
function Welcome(props) {
return <h1>Hello, {props.name}</h1>;
}
const element = <Welcome name="Sara" />;
ReactDOM.render(
element,
document.getElementById('root')
);
類似的,我們使用 ReactDOM.render()將其渲染在頁面上。
你可以在CodePen上嘗試一下,會在頁面列印出“Hello,Sara”。
組裝元件
元件的輸出能夠巢狀別的元件,這給了我們相當靈活的編碼空間,你可隨意的設計和抽象你的頁面元件結構。
我們舉個簡單的例子:
function Welcome(props) {
return <h1>Hello, {props.name}</h1>;
}
function App() {
return (
<div>
<Welcome name="Sara" />
<Welcome name="Cahal" />
<Welcome name="Edite" />
</div>
);
}
ReactDOM.render(
<App />,
document.getElementById('root')
);
你可以在CodePen上嘗試一下,會在頁面列印出
Hello,Sara
Hello,Cahal
Hello,Edite
提取元件
不要害怕細化你的程式碼,通常有效的提取能夠大大提高程式碼的可閱讀行和可維護性。舉個例子:
function Comment(props) {
return (
<div className="Comment">
<div className="UserInfo">
<Avatar user={props.author} />
<div className="UserInfo-name">
{props.author.name}
</div>
</div>
<div className="Comment-text">
{props.text}
</div>
<div className="Comment-date">
{formatDate(props.date)}
</div>
</div>
);
}
這是一個使用者評論的元件,其實這麼分也能用,但是還是有點麻煩,現在我們再來細化一下:
function UserInfo(props) {
return (
<div className="UserInfo">
<Avatar user={props.user} />
<div className="UserInfo-name">
{props.user.name}
</div>
</div>
);
}
function Comment(props) {
return (
<div className="Comment">
<UserInfo user={props.author} />
<div className="Comment-text">
{props.text}
</div>
<div className="Comment-date">
{formatDate(props.date)}
</div>
</div>
);
}
這樣看起來是不是更加清晰明瞭?
下一節,我們講的是元件的狀態和生命週期,這是重中之重,所以我打算單獨作為一節來將。
好的,先寫這麼多。如果對你的學習有用,請關注我~~
相關文章
- React 學習筆記【二】React筆記
- React-Native學習資料分享React
- 好程式設計師web前端培訓分享React學習筆記(二)程式設計師Web前端React筆記
- react native學習筆記(二)React Native筆記
- React學習手冊-React執行機制筆記(二)React筆記
- 學習ReactReact
- React學習React
- Redux 進階 – react 全家桶學習筆記(二)ReduxReact筆記
- Redux 進階 - react 全家桶學習筆記(二)ReduxReact筆記
- react + typescript 學習ReactTypeScript
- 學習react教程React
- React元件化學習總結第二天React元件化
- React-Native學習系列(二) Image和ScrollViewReactView
- react 學習--元件的生命週期(二)執行階段React元件
- React學習(1)-create-react-appReactAPP
- react js學習手記:react 事件ReactJS事件
- react學習筆記React筆記
- React 學習資源React
- react 學習 問題React
- React簡明學習React
- react 學習--使用MixinReact
- react學習總結React
- react學習目錄React
- react 學習筆記React筆記
- React入門學習React
- React學習之HookReactHook
- React 學習之 createElementReact
- 高效學習習慣分享
- 精益 React 學習指南 (Lean React)- 4.2 react patternsReact
- 好程式設計師web前端培訓分享React學習筆記(一)程式設計師Web前端React筆記
- 好程式設計師web前端培訓分享React學習筆記(三)程式設計師Web前端React筆記
- React 學習筆記【一】React筆記
- React 學習筆記【三】React筆記
- React學習(九):表單React
- React學習筆記-元件React筆記元件
- React.js系列學習ReactJS
- react學習筆記2React筆記
- React 學習筆記 – 元素React筆記