鍍金池/ 問答/HTML/ react中如果不用bind()如何傳參

react中如果不用bind()如何傳參

clipboard.png

一般給事件處理函數(shù)傳遞額外的參數(shù)是使用bind(),但是綁定bind()在組件頻繁渲染時(shí)候,這些bind()也頻繁執(zhí)行不是好事,如果不用bind()這樣綁定,有沒有其他更好的方式給事件處理函數(shù)傳遞額外的參數(shù)?

回答
編輯回答
孤島

你可以在componentDidMount 中去做綁定事件這件事。要設(shè)置的組件上添加refs,didMount中獲取refs然后遍歷來設(shè)置事件。

2017年10月21日 13:22
編輯回答
心上人

在constructor中統(tǒng)一綁定事件,在onClick中綁定事件每次都會(huì)觸發(fā)。

2017年10月12日 09:58
編輯回答
笨小蛋

如果不用bind的話,就是()=>this.liChecked(i)傳參,但是本質(zhì)上沒有解決你頻繁執(zhí)行的問題,因?yàn)檫@樣也是一個(gè)匿名函數(shù),會(huì)被重復(fù)創(chuàng)建,在需要傳參的前提下,暫時(shí)沒想到好的解決辦法。

2018年2月13日 07:55
編輯回答
尛憇藌
this.handleclick.bind(this,要傳的參數(shù))  
handleclick(傳過來的參數(shù),event) {

}

這樣實(shí)現(xiàn)吧?;蛘呤褂肊S6箭頭函數(shù)。

handleclick= (val) => {

}
onClick={(i)=>this.handleclick(i)}

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




2018年3月1日 16:59