在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Scala  HTML/ react 中 多個input組件 觸發(fā)的onKeyUp如何判斷?

react 中 多個input組件 觸發(fā)的onKeyUp如何判斷?

我現(xiàn)在是有多個單獨(dú)寫的自定義組件里面包含了input標(biāo)簽,然后一個頁面下調(diào)用多個這個自定義組件,共用一個onKeyUp事件,但是我發(fā)現(xiàn)e.target返回的是input標(biāo)簽,不好判斷是哪個自定義組件下的input觸發(fā)的事件。

上代碼

  keyUpHandle(e)
  {
    console.log(e.target);
    
  }
           <NoticeLineInput title='會議名稱:'
            Ustyle={defaultStyle} 
            placeholder='輸入會議名稱' 
            onKeyUp={this.keyUpHandle}
             key='name'/>

            <NoticeLineInput title='會議時間:'
            Ustyle={defaultStyle} 
            placeholder='時間格式:yyyy-MM-dd HH:mm:ss' 
            onKeyUp={this.keyUpHandle}
             key='time'/>

            <NoticeLineInput title='設(shè)置主體色:'
            placeholder='' 
            onKeyUp={this.keyUpHandle}
            type='colorPicker'
             key='mainColor'/>

自定義組件

render() {
    return (
      <div className='inputBox'>
        {this.props.placeValue}
        <input type={this.props.type?this.props.type:'text'} 
        className='defaultInput' 
        value={this.state.value}
        defaultValue={this.props.defaultValue?this.props.defaultValue:''}
        style={this.props.Ustyle?this.props.Ustyle:{}}
        placeholder={this.props.placeholder?this.props.placeholder:'請輸入內(nèi)容...'} 
        onKeyUp={this.props.onKeyUp?this.props.onKeyUp:()=>{}}
        onChange={this.onValueChange}
        onFocus={this.props.onFocus?this.props.onFocus:()=>{}}
        key={this.props.key?this.props.key:''}
        ref='uname'/>
      </div>
    )
  }

用了一個很蠢的辦法,給自定義組件加一個id,傳到Input上,然后根據(jù)id區(qū)分。

希望有更好的辦法!

回答
編輯回答
脾氣硬

在 組件調(diào)用處添加一個標(biāo)識:

<NoticeLineInput title='會議名稱:'
    Ustyle={defaultStyle} 
    placeholder='輸入會議名稱' 
    onKeyUp={e => this.keyUpHandle(e, 'name') }
    key='name'/>

<NoticeLineInput title='會議時間:'
    Ustyle={defaultStyle} 
    placeholder='時間格式:yyyy-MM-dd HH:mm:ss' 
    onKeyUp={ e => this.keyUpHandle(e, 'time') }
    key='time'/>

然后在事件處理函數(shù)里判斷來源:

keyUpHandle(e, target) {
    console.log('來源', target);
}
2018年7月25日 03:18
編輯回答
絯孑氣

既然子組件是自定義的,那么重新設(shè)計子組件 api 是更好的方式。避免父組件產(chǎn)生大量閉包。

增加如下方法

onKeyUp = e => this.props.onKeyUp && this.props.onKeyUp(e, this.props.key)
onKeyUp={this.onKeyUp}

或者,把 restProps 都傳給 input,那么調(diào)用時可以傳入 dataset 來做標(biāo)記。

2017年2月10日 16:36