onClick 和 event.target 不起作用反应

Coc*_*nch 2 javascript onclick dom-events reactjs

我计划制作一个state在单击时更新的按钮。按钮内部有一个imgdivonClick当我单击按钮时 on 触发,但当我单击 或 时则不img触发div。任何人都知道如何解决这个问题,因为我希望用户单击按钮上的任意位置(包括 和imgdiv。我的 jsx 代码是:

<div
                className={
                  'flex flex-row flex-wrap justify-around border-2 rounded border-dashed'
                }>
                {categoryLeft.map((category) => (
                  <button
                    onClick={this.addCategory}
                    type='button'
                    value={category}
                    name={category}
                    className={
                      'flex bg-teal-600 my-2 mx-1 w-auto h-auto hover:bg-teal-400 text-white font-bold px-1 rounded'
                    }>
                    <div className={'self-center'} value={category}>
                      {category}
                    </div>
                    <img
                      className={'float-right ml-1 self-center w-5 h-5'}
                      value={category}
                      src={CloseImg}
                    />
                  </button>
                ))}
              </div>
            </div>
Run Code Online (Sandbox Code Playgroud)

我的方法是:

 addCategory = (e) => {
    console.log(e.target);
    console.log(this.state.categoryLeft);
    this.setState({
      categoryUsed: [...this.state.categoryUsed, e.target.value],
      categoryLeft: this.state.categoryLeft.filter(
        (cat) => cat !== e.target.value
      ),
    });
  };
Run Code Online (Sandbox Code Playgroud)

小智 5

你可以尝试e.currentTarget.value代替e.target.value.

来自 DOM 事件文档:

Event.currentTarget 在事件遍历 DOM 时标识事件的当前目标。它始终引用已附加事件处理程序的元素,而不是标识发生事件的元素的 event.target。