【问题标题】:React-select creatable - only allow one created optionReact-select creatable - 只允许一个创建的选项
【发布时间】:2018-11-09 09:33:35
【问题描述】:

我正在使用react-select 和允许您创建新选择选项的可创建功能 - 只需在example 上输入选择/输入字段。

我想检查一次只允许一个可创建的选项,下一个创建的选项将删除并取代前一个。目前你可以创造无限量。

这是处理创建选项的部分,所以我想我需要添加某种规则来只允许一个选项。

任何帮助表示赞赏。

  handleCreate = input => (inputValue: any) => {
    this.setState({ isLoading: true });
    setTimeout(() => {
      const { options } = this.state;
      const newOption = createOption(inputValue);
      this.setState({
        isLoading: false,
        options: [...options, newOption],
        value: newOption
      });
      input.onChange(newOption);
    }, 1000);
  };

https://codesandbox.io/s/o49kjl09j9

【问题讨论】:

    标签: javascript reactjs react-redux react-select


    【解决方案1】:

    你可以做的是存储新选项的索引,检查是否存储了一个索引,如果有,用新的替换这个值,如下代码:

    state = {
        value: this.props.options[0],
        options: this.props.options,
        hasCreatedOption: false
      };
      handleCreate = input => (inputValue: any) => {
        this.setState({ isLoading: true });
        setTimeout(() => {
          const { options } = this.state;
          const newOption = createOption(inputValue);
          let hasCreatedOption = false;
    
          if (this.state.hasCreatedOption) {
            options[this.state.hasCreatedOption] = newOption;
          } else {
            options.push(newOption);
          }
          hasCreatedOption = options.length - 1;
    
          this.setState({
            hasCreatedOption,
            isLoading: false,
            options: [...options],
            value: newOption
          });
          input.onChange(newOption);
        }, 1000);
      };
    

    Here a live example.

    【讨论】:

    • 您的示例起初似乎有效,但它只会在每个其他创建的选项上添加一个新选项。例如输入 3 个自定义选项。第三个将显示
    • @TomRudge 很抱歉这个错误,我已经更新了我的代码来修复这个错误。
    • 感谢您的更新 - 这是另一个将您之前的两个答案联系起来的问题 - 这是最后的拼图...您能帮忙吗? stackoverflow.com/questions/53261367/…@劳拉
    猜你喜欢
    • 2020-09-09
    • 1970-01-01
    • 1970-01-01
    • 2017-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-21
    相关资源
    最近更新 更多