reactjs - react-select.js 多选防止默认 x 按钮或删除

标签 reactjs react-select

为什么我使用 react 选择进行多重选择。我希望阻止默认删除包生成的关闭选项。请参阅随附的打印屏幕 http://i65.tinypic.com/23wlkhz.jpg `

function renderer(obj, index){
  return <span name='name'>{obj.value}</span>
}
export default  class Select extends Component {
  componentDidMount(){
    this.refs.stateSelect.focus();
  }

  render() {
   const {props} = this;
   const options = props.options;

   return <Select
    {...props}
    allowCreate={true}
    multi={true}
    ref="stateSelect"
    tabIndex={0}
    autofocus
    valueKey='value'
    clearable={false}
    value={props.value}
    options={options}
    valueRenderer = {renderer}
    optionRenderer={renderer}
    onChange={this.onChange}
  />;
}

 onChange(value, selectedOptions){
   this.props.onSelect && this.props.onSelect(selectedOptions);
 }
}`

最佳答案

我认为目前使用 Select 控件不可能实现这一点,除非您想 fork 代码并修改它。

一种不优雅的解决方案是在 onChange 监听器中将新值与以前的值进行比较,如果某些项目较少,则恢复旧值。如果在您的用例中,您想让用户清除整个列表,但一次不想清除一个值,则可以让 onChange 接受新值(如果它为空)。 像这样的东西 -

export default  class Select extends Component {
  componentDidMount(){
    this.refs.stateSelect.focus();
  }

  componentWillReceiveProps(newProps){
    this.setState({"value":newProps.value}});
  }

  render() {
   const {props} = this;
   const options = props.options;

   return 
   (<Select
    {...props}
    allowCreate={true}
    multi={true}
    ref="stateSelect"
    tabIndex={0}
    autofocus
    valueKey='value'
    clearable={false}
    value={this.state.value}
    options={options}
    valueRenderer = {renderer}
    optionRenderer={renderer}
    onChange={this.onChange}
    />);
}

 onChange(value, selectedOptions){
    if (this.value.length > this.state.value.length
        || this.value == "" //comment this line if you don't want user to clear the entire select
        ){
      this.setState({"value":value});
    }
   this.props.onSelect && this.props.onSelect(selectedOptions);
 }
}

关于reactjs - react-select.js 多选防止默认 x 按钮或删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34308356/

相关文章:

javascript - 带 React 的 TinyMCE 编辑器无法访问本地文件

reactjs - TextInput 标签内的工具提示不起作用。 Material-UI + React

javascript - 将 optionRenderer 与 Select.Aysnc 结合使用( react 选择)

javascript - React Select 不会更新单击选项的值

javascript - 当我失去焦点或移至下一个字段时, react 选择会清除我键入的值

reactjs - AsyncSelect 不会更改加载消息,也不会更改选项消息(react-select 库)

node.js - 用于带有 sails 的 React-Redux 应用程序的 SSR

reactjs - Error :(19, 35) TS2304 : Cannot find name 'T' . 为什么我无法在 TS 中扩展接口(interface)?

javascript - 如何从 firestore 获取没有元数据的文档

reactjs - react-select isMulti 过滤选项