onClick在React.js中触发多次

时间:2018-11-22 07:32:16

标签: javascript reactjs javascript-events onclick event-handling

我有以下内容。

import React from 'react'
import Profile from './Profile'

import Messages from './Messages'
class ContactContent extends React.Component {
  constructor () {
    super()
    this.state = {
      message: ''
    }
    this.handleOnClick = (e) => {
      e.preventDefault()
      console.log('send message called')
    //   this.props.onSendMessage(this.state.message)
    }
  }

  render () {
    const { id, name, profile, messages } = this.props.user
    return (
      <div className='content'>
        <Profile
          name={id}
          profile={profile}
        />
        <Messages
          messages={messages}
        />
        <div className='message-input'>
          <div className='wrap'>
            <input type='text' placeholder='Write your message...' onChange={(e) => this.setState({ message: e.target.value })} />
            {/* <i className="fa fa-paperclip attachment" aria-hidden="true"></i> */}
            <button className='' onClick={this.handleOnClick}><i className='fa fa-paper-plane' aria-hidden='true' /></button>
          </div>
        </div>
      </div>
    )
  }
}

export default ContactContent

当我单击按钮onclick时,它会触发handleonclick函数。但是handleonclick的调用就像无限时间一样。这是我第一次见过的奇怪行为,知道我做错了什么吗?

2 个答案:

答案 0 :(得分:0)

修复了存在导致此问题的外部javascript文件的问题。代码没有错。

答案 1 :(得分:0)

否,您每次在页面加载/渲染加载时都在调用 handleOnClick 因此,在不进行此操作的情况下,或者为了避免多次通话,请尝试使用:

  

onClick事件中该函数的胖箭头调用。

<button className='' onClick={(e) => this.handleOnClick(e)}><i className='fa fa-paper-plane' aria-hidden='true' /></button>