Skip to content

Conversation

RaoHai
Copy link
Contributor

@RaoHai RaoHai commented Feb 23, 2017

https://github.com/react-component/select/blob/master/src/Select.jsx#L728

输入,选择一个选项 ,触发 onChange, 异步改变 options , 触发 componentWillUpdate, 于是进入 adjustOpenState,进行如下判断。

此时焦点仍然在 input 里,会强制把下拉框再弹出。但是用户已经完成了选择,其实不应该弹。

if (typeof document !== 'undefined' &&
      this.getInputDOMNode() &&
      document.activeElement === this.getInputDOMNode()) {
      open = true;
   }

于是加了一个 _justSelected ,标记是否刚刚完成选择。如果刚刚完成选择,之后不会再强制打开下拉菜单。当用户有新的输入时,_justSelected 置为 false。

@RaoHai RaoHai changed the title Add an internal to fix dropdown visiability Add an internal variable to fix dropdown visibility Feb 23, 2017
@coveralls
Copy link

Coverage Status

Coverage increased (+0.02%) to 95.462% when pulling 6d8d040 on RaoHai:justSelected into 2e4b73e on react-component:master.

@yesmeck
Copy link
Member

yesmeck commented Feb 27, 2017

我觉得问题在于这个判断为啥没生效。

但是用户已经完成了选择,其实不应该弹。

ant-design/ant-design#4804 的描述,并没有完成选择呀。

@yesmeck
Copy link
Member

yesmeck commented Mar 20, 2017

这样改也是有问题的,在请求过程中如果 Select 已经失去了焦点,就不应该打开了。

@yesmeck
Copy link
Member

yesmeck commented Apr 3, 2017

因为引入 getInputElement 导致这里拿不到真正 input 的 ref 了,是不是可以把这里改成用 querySelector('input,textarea') 去拿到真正的 input 的?

@yesmeck
Copy link
Member

yesmeck commented May 2, 2017

#177

@yesmeck yesmeck closed this May 2, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
3 participants