React 入門(mén)

1.React 是什么

貼上官網(wǎng)的說(shuō)明:A JavaScript library for building user interfaces

一般學(xué)習(xí)新框架可以從官網(wǎng)上找到文檔開(kāi)始看起。
在此貼上react官網(wǎng)鏈接 https://reactjs.org/

2.創(chuàng)建React項(xiàng)目

使用官方腳手架創(chuàng)建一個(gè)項(xiàng)目

  • 1.首先看環(huán)境有沒(méi)有安裝好
    node -v
    npm -v
  • 2.全局安裝react命令
    npm install -g create-react-app
  • 3.創(chuàng)建項(xiàng)目
    create-react-app [項(xiàng)目名稱]
  • 4.運(yùn)行項(xiàng)目
    npm start/yarn start

3.React文件結(jié)構(gòu)和JSX語(yǔ)法

    package.json->index.html->index.js->APP.js

4.React組件作用

  • 組件復(fù)用,提高開(kāi)發(fā)速度

5.React組件通訊(屬性傳值)

  • 1.動(dòng)態(tài)的值渲染通過(guò)一個(gè)大括號(hào)的形式

      const Person = () => {
        // return <p>web前端組,有(XXX)人</p>;
        return <p>web前端組,有{Math.round(Math.random() * 30)}人</p>;
      };
      export default Person;
    
  • 2.定義函數(shù)通過(guò)參數(shù)的方式去傳值

  •       const Person = props => {
            // return <p>web前端組,有(XXX)人</p>;
            return (
              <p>
                {props.name},有{props.count}人
              </p>
            );
          };
    
    
              <Person name="web前端組" count="30" />
          定義一個(gè)props的形參去接收Person標(biāo)簽中傳遞過(guò)來(lái)的實(shí)參name,count。 在組件內(nèi)部接收并賦值
    
  • 3.獲取雙標(biāo)簽中的內(nèi)容

      <Person name="Java組" count="10">人間處處是真愛(ài)</Person>
    

    我們要拿到雙標(biāo)簽的的內(nèi)容可以通過(guò)children方法獲取

      const Person = props => {
        return (
          <div>
            <p>
              {props.name},有{props.count}人
            </p>
            <p>{props.children}</p>
          </div>
        );
      };
      export default Person;
    

6.React-state狀態(tài)使用

  • 1.state和props不同props是用來(lái)接收這個(gè)值,為state是用來(lái)改變這個(gè)值的狀態(tài)
    類似Vue中的data

          class App extends Component {
            state = {
              person: [{ name: 'Android', count: 10 }, { name: 'DBA', count: 1 }, { name: 'Test', count: 40 }],
              otherState: 'anything'
            };
            render() {
              return (
                <div className="App">
                  {/* <header className="App-header">
                    <img src={logo} className="App-logo" alt="logo" />
                    <p>
                      Edit <code>src/App.js</code> and save to reload.
                    </p>
                    <a className="App-link"  target="_blank" rel="noopener noreferrer">
                      Learn React
                    </a>
                  </header> */}
                  <h1>Hello World</h1>
                  <Person name={this.state.person[0].name} count="30" />
                  <Person name="ios組" count="20" />
                  <Person name="PHP組" count="10" />
                  <Person name="Java組" count="10">
                    人間處處是真愛(ài)
                  </Person>
                </div>
              );
            }
          }
    
  • 2.修改state里的值

           changeName = () => {
              this.state.person[0].name = '123';
            };
    
    
    
          Do not mutate state directly. Use setState() 
          不要直接的修改值 
    
          要用React提供的這個(gè)方法 setState() :
    
        this.setState({
            person: [{ name: 'Android5', count: 1000000 }, { name: 'DBA', count: 1 }, { name: 'Test', count: 40 }]
          });
    

7.React屬性傳值(傳事件)

  • 1.函數(shù)傳參

      <button onClick={() => this.changeName('安卓')}>更改狀態(tài)值</button> // 通過(guò)箭頭函數(shù)的方式
    
      <button onClick={this.changeName.bind(this, '安卓')}>更改狀態(tài)值</button> // 通過(guò)bind
    
  • 2.屬性傳值

      <Person myClick={this.changeName.bind(this, 'IOS')} name="ios組" count="20" />
    
    
              然后子組件通過(guò)props的方式去接收
             <p onClick={props.myClick}>
                  {props.name},有{props.count}人
                </p>
    

8.React雙向數(shù)據(jù)綁定

          <input type="text" onChange={props.changed} defaultValue={props.name} />
            在input標(biāo)簽上綁定一個(gè)onChange方法 并接收props傳遞過(guò)來(lái)的changed上綁定的事件
  • APP.js person標(biāo)簽中定義changed方法并把定義的事件執(zhí)行

                <Person changed={this.nameChangeHandle} name={this.state.person[0].name} count={this.state.person[0].count} />
?著作權(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)容

  • 現(xiàn)在最熱門(mén)的前端框架,毫無(wú)疑問(wèn)是React。在基于React的React Native發(fā)布一天之內(nèi),就獲得了 50...
    Mycro閱讀 1,123評(píng)論 3 6
  • React簡(jiǎn)介 React是一個(gè)用于構(gòu)建用戶界面的JavaScript庫(kù),主要有以下幾個(gè)特點(diǎn): 聲明式設(shè)計(jì)--Re...
    紫諾_qiu閱讀 944評(píng)論 0 2
  • 在React這股目前最熱前端框架之風(fēng)刮來(lái)之前,一直在Cocos2d-html5游戲和半路出家的Android應(yīng)用的...
    hahafei閱讀 422評(píng)論 0 2
  • 1.React 的學(xué)習(xí)資源 react官方首頁(yè)https://facebook.github.io/react/ ...
    賈里閱讀 3,986評(píng)論 0 0
  • 2018年9月12日讀書(shū)分享第2天 《孔子如來(lái)》——(2)人生即天命 前幾天在朋友的推薦下看《天道》,一部24集的...
    左靜閱讀 528評(píng)論 0 0

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