React Material-UI" Chip"组件' x' (删除)按钮不起作用

时间:2017-01-29 21:58:38

标签: javascript reactjs material-ui

我无法得到"芯片"控制以纪念" X"像示例中的按钮:http://www.material-ui.com/#/components/chip

添加" onRequestDelete"属性确实添加" X"按钮,但点击它什么都不做。事实上,它似乎并没有徘徊在" X"按钮本身会触发其悬停效果(即整个芯片具有悬停效果,并且按钮本身应该具有悬停效果 - 它似乎不会发生按钮的悬停效果)。这就像我无法获得按钮的焦点。

注意:如果我点击芯片然后按"删除"关键," > IN DELETE"警报。我已经注意到了类似的行为,因为我也在尝试使用材料-ui-chip-input," Backspace"努力删除芯片,但我永远不能使用" X"按钮(一个或多个)。

基本示例:

import React from 'react';
import Chip from 'material-ui/Chip';

class MyChip extends React.Component {
    constructor(props) {
        super(props);

        this.delete = this.delete.bind(this);
    }

    delete(e) {
        alert(" > IN DELETE"); // Does not fire on button click (except when I hit "Delete" key, see above explanation)
    }

    render() {
        return <Chip key={0} onRequestDelete={this.delete}>testy</Chip>;
    }
}

相关的package.json依赖项:

"material-ui": "^0.16.7",
"material-ui-chip-input": "^0.12.1",
"react": "^15.4.2",
"react-dom": "^15.4.2",
"react-tap-event-plugin": "^2.0.1",

6 个答案:

答案 0 :(得分:2)

我有同样的问题。对我来说,修复是在'react-tap-event-plugin'上添加了一个缺少的依赖。

您可以在http://www.material-ui.com/#/get-started/installation

找到官方文档

相关部分是:

import injectTapEventPlugin from 'react-tap-event-plugin';

// Needed for onTouchTap
// http://stackoverflow.com/a/34015469/988941
injectTapEventPlugin();

您的package.json依赖项中似乎有插件,但请确保您正在导入并初始化它。

答案 1 :(得分:1)

删除功能似乎不存在。请尝试在Chip点击事件上绑定它:

return <Chip key={0} onRequestDelete={this.delete.bind(this)}>testy</Chip>;

答案 2 :(得分:1)

我在一个项目中遇到了同样的问题。问题是我们在全局重置样式表中将<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div id="form-database-settings"> <label for="database_section">Database Settings</label> <form id="database_section" class="form-settings"> </form> </div>样式应用于所有pointer-events: none。删除此错误对我来说就是一个问题。

答案 3 :(得分:0)

  1. 芯片上指定 deleteIcon 道具。
  2. CloseIcon mdi-material-ui 模块放入deleteIcon属性。
  3. CloseIcon 添加 onClick 功能。

通过这种方式,它可以在移动设备和台式机上运行。 对我来说,简单的onRequestDelete在移动设备上不起作用 但是我猜较新版本的material-ui可以解决此问题。

<Chip deleteIcon={<CloseIcon onClick={this.delete} />}>

答案 4 :(得分:0)

确保传递函数而不是调用函数:

onDelete={() => handleDelete()}

答案 5 :(得分:0)

就我而言,这有帮助(显然是 onClick 函数的问题):

    <RawChipInput
      ... other Props
      chipRenderer={(
        {
          value,
          isFocused,
          isDisabled,
          isReadOnly,
          handleClick,
          handleDelete,
          className,
        },
        key
      ) => (
        <Chip
          key={key}
          className={className}
          onDelete={handleDelete}
       //   onClick={handleClick}
          label={value}
        />
      )}
    />