React 開發(fā)實(shí)用小集合(2018.08)

1、不使用bind

使用bind的寫法

this.handleclick.bind(this,要傳的參數(shù))  
handleclick(傳過來的參數(shù),event) {

}

Eslint已經(jīng)不建議使用,可以使用ES6箭頭函數(shù)替代

handleclick= (val) => {

}

或者

handleclick(傳過來的參數(shù)) {
    const _key = 傳過來的參數(shù)
    const _this = this
    return (event) => {
      const obj = {}
      obj[_key] = event.target.value
      _this.setState(obj)
    }
  }
 onChange={this.handleclick('要傳的參數(shù)')}
注意:

需要傳參數(shù),如果不使用bind例如:

// 傳輸點(diǎn)擊的是哪個(gè)用戶
  handleUserClick = (userId) => {
    console.log("ddd")
    this.props.onSetCurrentUser(userId)
  }

  render(){
    return (
      <div>
        <ul className="user-list">
          {this.props.users.map(user=>{
            return (
              <li className={(this.props.currentUserId===user.id?'current':'')}
                  key={user.id}
                  onClick={this.handleUserClick(user.id)}
              >
                <span>{user.name}</span>
              </li>
            )
          })}
        </ul>
        <input onChange={this.handleChange} value={this.state.newUser}/>
        <button onClick={this.handleClick}>新增</button>
      </div>
    )
  }

onClick={this.handleUserClick(user.id)
就會(huì)默認(rèn)執(zhí)行篱竭,因?yàn)槭茄h(huán)就會(huì)執(zhí)行n遍,而使用bind的方法是沒問題的步绸,所以應(yīng)該改為同樣的箭頭函數(shù)綁定:

onClick={() => this.handleUserClick(user.id)}

此時(shí)加上()=>是返回的this.handleUserClick(user.id)函數(shù)掺逼,而不會(huì)在加載的時(shí)候執(zhí)行一遍

2、報(bào)錯(cuò):SyntaxError: 'import' and 'export' may appear only with 'sourceType: module'

SyntaxError: 'import' and 'export' may appear only with 'sourceType: module'

在Eslint json里配置

  "parserOptions": {
    "ecmaFeatures": {
      "experimentalObjectRestSpread": true,
      "jsx": true,
      "modules": true
    },
    "sourceType": "module",
    "ecmaVersion": 7
  },

3瓤介、Error: Couldn't find preset "env" relative to directory

npm i babel-preset-env

其他報(bào)錯(cuò)吕喘,例如:stage-2

npm i -D babel-preset-stage-2

4、render

如果有普通標(biāo)簽刑桑,就像vue的template需要在外邊嵌套一層div

render(){
    return(
      <div>
        <h2>用戶列表</h2>
        <UserList onAddUser={this.handleAddUser}  
                  users={this.state.users} 
                  onSetCurrentUser={this.handleSetCurrentUser}
                  currentUserId={this.state.currentUserId}
        />
      </div>
      
    )
  }

5氯质、新項(xiàng)目 npm i出錯(cuò)

不切換源,先試試升級(jí)到最新版本

npm install -g npm 

如果已經(jīng)切換了源祠斧,執(zhí)行還原回來

npm config set registry https://registry.npmjs.org

6闻察、阻止冒泡事件

定義一個(gè)函數(shù)

    stopPropagation = (e) => {
      e.stopPropagation()
      e.nativeEvent.stopImmediatePropagation()
    }

使用

<html>
...
      <div onClick={(event) => this.stopPropagation(event)}>
      </div>
...
</html>

注意:

是否加 this 取決于使用的是有狀態(tài)組件還是無狀態(tài)組件

7、添加多個(gè)點(diǎn)擊事件

var Test = React.createClass({
   onClick(event){
      func1();
      func2();
   },
   render(){
      return (
         <a href="#" onClick={this.onClick}>Test Link</a>
      );
   }
});

或者

<a href="#" onClick={function(event){ func1(); func2()}}>Test Link</a>

ES6

<a href="#" onClick={(event) => { func1(); func2();}}>Test Link</a>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市辕漂,隨后出現(xiàn)的幾起案子呢灶,更是在濱河造成了極大的恐慌,老刑警劉巖钉嘹,帶你破解...
    沈念sama閱讀 222,807評(píng)論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件鸯乃,死亡現(xiàn)場離奇詭異,居然都是意外死亡跋涣,警方通過查閱死者的電腦和手機(jī)缨睡,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,284評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來陈辱,“玉大人奖年,你說我怎么就攤上這事∨嫣埃” “怎么了陋守?”我有些...
    開封第一講書人閱讀 169,589評(píng)論 0 363
  • 文/不壞的土叔 我叫張陵,是天一觀的道長鹏浅。 經(jīng)常有香客問我嗅义,道長屏歹,這世上最難降的妖魔是什么隐砸? 我笑而不...
    開封第一講書人閱讀 60,188評(píng)論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮蝙眶,結(jié)果婚禮上季希,老公的妹妹穿的比我還像新娘。我一直安慰自己幽纷,他們只是感情好式塌,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,185評(píng)論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著友浸,像睡著了一般峰尝。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上收恢,一...
    開封第一講書人閱讀 52,785評(píng)論 1 314
  • 那天武学,我揣著相機(jī)與錄音,去河邊找鬼伦意。 笑死火窒,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的驮肉。 我是一名探鬼主播熏矿,決...
    沈念sama閱讀 41,220評(píng)論 3 423
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了票编?” 一聲冷哼從身側(cè)響起褪储,我...
    開封第一講書人閱讀 40,167評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎栏妖,沒想到半個(gè)月后乱豆,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,698評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡吊趾,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,767評(píng)論 3 343
  • 正文 我和宋清朗相戀三年宛裕,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片论泛。...
    茶點(diǎn)故事閱讀 40,912評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡揩尸,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出屁奏,到底是詐尸還是另有隱情岩榆,我是刑警寧澤,帶...
    沈念sama閱讀 36,572評(píng)論 5 351
  • 正文 年R本政府宣布坟瓢,位于F島的核電站勇边,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏折联。R本人自食惡果不足惜粒褒,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,254評(píng)論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望诚镰。 院中可真熱鬧奕坟,春花似錦、人聲如沸清笨。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,746評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽抠艾。三九已至苛萎,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間检号,已是汗流浹背腌歉。 一陣腳步聲響...
    開封第一講書人閱讀 33,859評(píng)論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留谨敛,地道東北人究履。 一個(gè)月前我還...
    沈念sama閱讀 49,359評(píng)論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像脸狸,于是被迫代替她去往敵國和親最仑。 傳聞我的和親對(duì)象是個(gè)殘疾皇子藐俺,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,922評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容