React生态圈Web前端之路前端开发那些事

reactjs中事件传参

2017-01-20  本文已影响1914人  温木先生

最近公司用reactjs做开发,虽然网上很多教程,但实际开发中许多细小的技术点还是需要自己去偶遇

1.事件传参技巧

onHandleChange(index,event){
    let val=event.target.value
}
//关键代码
source.map((item,index)=>{
      return <input type="text" value={item.name} onChange={this.onHandleChange.bind(this,index)} />
});

在给方法传递新参数时,方法原有的参数会排在新参数之后

做过reactjs的同学都知道,event这个参数是不需要手动传递的,直接在方法中声明就可以使用,如下代码:

onChangeHandle(event){
      let val=event.target.value;
}

render(){
  return (<div>
    <input type="text" onChange={this.onChangeHandle.bind(this)} />
</div>)
}

2.扩展阅读

import React from 'react';
export default class WDropdownlist extends React.Component
{
   constructor(props) {
     super( props );
     this.state = {
       value: "-1",
       text: "全部",
       selectedValue: 0
    } 
  }
  componentWillReceiveProps(nextProps) {
        this.setState({
            selectedValue: nextProps.selectedValue
        });
   }
  componentWillMount() {
    this.setState({
            selectedValue: this.props.selectedValue
        });
  }
  handleChange(event)
  {
    let _self = this;
    let _props = _self.props;
    this.setState({ selectedValue: event.target.value });
    const currentIndex = event.target.selectedIndex;
    const targetItems = JSON.parse(JSON.stringify(_props.dataSource));
    _props.onChange && _props.onChange.call(_self, {
      currentIndex: currentIndex,
      currentItem: targetItems[currentIndex]
    })
  }
  render() {
    const self = this;
    const props = self.props;
    var state = self.state;
    return (
      <select className={props.className} style={props.style} disabled={props.disabled} onChange={self.handleChange.bind(self) } name={props.name} value={state.selectedValue}>
        {
          ( !props.dataSource||props.dataSource.length==0 ) ?(
          <option value={this.state.value}>{this.state.text}</option>
          ) : (
          props.dataSource.map(( item, index ) =>
                <option key={index} value={item[props.valueField]} >{item[props.textField]}</option> )
          )
        }
      </select>
    );
  }
}
WDropdownlist.defaultProps = {
  style: {},
  valueField: 'value',
  textField: 'text',
  selectedValue:0,
  disabled:false
}
import WDropdwonList from '../wigets/w-dropdwon-list.js';
//第一个参数就是下面调用控件时传递的参数,item是定义组件时传递的当前选中项对象
onChangeHandle(currentMan,item){
}
render(){
    return (<div>
       otherSource.map((currentMan,index)=>{
        <WDropdwonList onChange={this.onChangeHandle.bind(this,currentMan)}
                dataSource={this.state.source}
                textField='Display'
                valueField='Value'
                selectedValue={currentSubsystem['PointRoles'][key]||'-1'}  >
        </WDropdwonList>
})
<div>)
}  
上一篇下一篇

猜你喜欢

热点阅读