4.1改变this指向问题

  1. //1.改变事件内部this指向的问题 bind(this)
  2. render(){
  3. return( //执行事件时必须要加上bind bind(this)改变this关键字的指向问题
  4. <div onClick={this.handleClick.bind(this)}>{this.state.msg}</div>
  5. )
  6. } //事件直接写
  7. handleClick(){
  8. this.setState({
  9. msg:"change"
  10. })
  11. }
  1. //2.使用箭头函数 改变this指向问题
  2. render(){
  3. return(
  4. <div onClick={this.handleClick}>{this.state.msg}</div>
  5. <input onKeyUp={this.handleKeyUp}></input>
  6. )
  7. }
  8. handleClick=()=>{
  9. this.setState({
  10. msg:"change"
  11. })
  12. }
  13. handleKeyUp=(value)=>{
  14. console.log(value.keyCode)
  15. }

4.2事件传参

  1. //Tips:传递参数一定要加bind(this,params) params:要传递的参数
  2. render(){
  3. return(
  4. <div onClick={this.handleClick.bind(this,"101")}>{this.state.msg}</div>
  5. )
  6. }
  7. handleClick=(id)=>{
  8. console.log(id)
  9. this.setState({
  10. msg:"change"
  11. })
  12. }

例题 传id

  1. render() {
  2. return (
  3. <div className="container">
  4. {this.state.playlists.map(item=>{
  5. return(<div className="list" key={item.id}
  6. onClick={this.handleClick.bind(this,item.id)}>
  7. <img className="pic" src={item.coverImgUrl}></img>
  8. <p className="title">{item.name}</p>
  9. </div>)
  10. })}
  11. </div>
  12. );
  13. }
  14. handleClick=(id)=>{
  15. this.props.history.push(`/musicdetail?id=${id}`)
  16. }