【问题标题】:React bootstrap typeahead clearButton icon (X) does not appear for a single selectionReact bootstrap typeahead clearButton图标(X)不会出现在单个选择中
【发布时间】:2018-07-17 05:21:15
【问题描述】:

我尝试为单个选择输入选择 clearButton 道具。但是它没有按预期工作。默认选择的输入不会出现清除 (x) 图标。它仅在发生事件更改时出现,即如果我选择了其他输入。我的问题是手动删除输入不会触发所选值的更改。任何指针将不胜感激。

<Typeahead
  clearButton
  defaultInputValue={props.city}
  options={props.cityOptions}
  onChange={(selected) => handleCityFieldChange(selected[0], props)}
  placeholder="Choose a city"
/>

这里是handleCityFieldChange函数:

handleCityFieldChange = (selected, props) => {
    const newFieldValues = Object.assign({}, props.fieldValues, {"city": selected});
    props.onChange(newFieldValues);
};

【问题讨论】:

  • 你能发布你的代码吗?
  • ` handleCityFieldChange(selected[0], props) }/> `
  • 说如果城市字段显示了数据库中已经持久化的城市,那么在查看时没有 X 图标。只有当我选择其他城市时,才会出现 X 图标。

标签: react-bootstrap-typeahead


【解决方案1】:

使用defaultSelected,而不是defaultInputValue

<Typeahead
  clearButton
  defaultSelected={props.city}
  options={props.cityOptions}
  onChange={(selected) => handleCityFieldChange(selected[0], props)}
  placeholder="Choose a city"
/>

只有在有选择时才会出现清除按钮。 defaultInputValue 设置输入的value,但实际上没有选择选项,这就是您看不到按钮的原因。

注意:defaultSelected 需要一个数组,因此如果 props.city 是一个对象,则需要传递 [props.city]

【讨论】:

  • 所以在我的用例中使用 defaultSelected 按我预期的方式工作。不确定我是否搞砸了其他东西,但如果通过 [props.city],我会收到错误 - Uncaught TypeError: Cannot read property 'paginationOption' of undefined
  • 从您的评论中我不清楚您是否进行这项工作。 props.city 看起来像什么?此类信息应发布在您的问题中。帮我帮你:)
  • 抱歉,如果我在上一条评论中不清楚。使用 defaultSelected={[props.city]} 可以显示清晰的图标。 props.city 在这里是一个字符串。但现在如果我清除所选选项,我将无法重新选择任何城市。我在控制台的最后一条评论中看到了“未捕获的 TypeError”。
  • 因此,在 handleCityFieldChange 函数中检查未定义后,我能够解决 Uncaught TypeError 问题。添加了这一行:if (!selected) {selected=""};
猜你喜欢
  • 2021-07-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-28
  • 1970-01-01
相关资源
最近更新 更多