【发布时间】:2019-03-23 03:46:54
【问题描述】:
使用 react-select v2,我想在用户点击某个键时显示并关注 Select 元素。以下是我尝试过的一些事情或我走过的路径。
当我为 Select 元素设置 ref 并尝试在其上调用 .focus 时,它说没有找到焦点函数。也许我应该以某种方式获取它的一个子元素,然后将其称为焦点?
似乎没有任何我可以传递的道具会触发焦点功能。有openOnFocus,但没有focusOnOpen。我唯一能想到的就是启用自动对焦,然后以某种方式触发重新安装,但似乎没有一种简单的方法可以做到这一点,而且感觉很糟糕。或者,我可以启用每次按下键时只创建 Select 组件而不是显示它,然后卸载它而不是隐藏它。
如何正确地让 react-select 元素在需要时获得焦点?
我在我的组件周围使用了一个包装器组件。这是我的包装器的渲染方法:
render() {
return (
<Select
options={this.props.options}
value={this.state.value}
ref={this.selectRef}
/>
);
}
这就是我称之为包装器的地方:
<Wrapper
options={this.props.labelOptions}
ref={this.wrapperRef}
/>
然后我尝试使用this.dropdownNode.focus() 或this.dropdownNode.current.focus() 调用焦点,两者都说找不到焦点方法。
【问题讨论】:
-
react-select在它的 ref 上有一个焦点功能,你能告诉我们你是如何尝试的吗? -
@BoyWithSilverWings 啊在这种情况下可能是因为我在它上面实现了一个包装器组件。所以我需要暴露焦点功能。如果它不起作用,我会尝试然后发布代码。
-
看起来 react-select autoFocus 属性正在 inputRef 上调用
.focus(),如下所示:github.com/JedWatson/react-select/blob/master/src/…
标签: reactjs react-select