Компонент React не запускает onClick

#reactjs

#reactjs

Вопрос:

У меня есть button компонент React, который не запускает onClick событие при нажатии. Я добавил :active CSS-селектор, чтобы убедиться, что он включен и доступен для просмотра. странно то, что onChange обработчик на input рядом с ним работает нормально. Есть мысли?

 return (
  <ul className="horizontal">
    <li className="adjustInput">
      <label>
        <input max={200} min={10} onChange={e => actions.onAdjustSize(e.target.value)} type="range" value={size} />
        Image Size: {size}%
      </label>
    </li>
    <li className="adjustInput">
      <label>
        <input max={OPACITY_MULTIPLIER} min={OPACITY_MULTIPLIER / 10} onChange={e => {actions.onAdjustOpacity(e.target.value / OPACITY_MULTIPLIER)}} type="range" value={opacity} />
        Opacity: {opacity}%
      </label>
    </li>
    <li className="adjustInput">
      <label>
        {/* This onChange is fired when I type in the input */}
        <input onChange={actions.onRemove} type="text" />
        {/* This onClick isn't fired no matter what I try */}
        <button onClick={actions.onRemove}>Remove</button>
      </label>
    </li>
  </ul>
);
  

Изображение пользовательского интерфейса, отображаемое кодом выше

Я, очевидно, пытался щелкнуть по кнопке с помощью мыши. Я также пробовал переходить к нему с табуляцией и нажимать пробел и ввод. Запуск щелчка вручную в JS. Кажется, ничего не работает :/

Комментарии:

1. Вам действительно нужно поместить кнопку в тот же элемент label, что и input?

2. Можете ли вы щелкнуть правой кнопкой мыши и проверить button и посмотреть, какие атрибуты у него есть в браузере (например, Chrome)?

3. этот компонент отображается в выпадающем списке. Я просто попытался удалить его из выпадающего списка, и тогда это сработало

4. @raina77ow — Я просто сделал это для тестирования. кнопка может находиться в любом месте компонента.

5. Видите ли, метка обычно связана с одним элементом управления формой, так что щелчок по метке активирует соответствующий ввод. В вашем случае это может привести к путанице.