palantir/blueprint

[select] Select component doesn't respect the query prop

Open

#4,362 创建于 2020年10月7日

在 GitHub 查看
 (3 评论) (0 反应) (0 负责人)TypeScript (20,263 star) (2,167 fork)batch import
P2Package: selectStatus: needs more infohelp wanted

描述

Environment

  • Package version(s): @blueprintjs/select (3.14.2)
  • Operating System: Windows Version 10.0.18363 Build 18363
  • Browser name and version: Google Chrome 85.0.4183.121

Code Sandbox

https://codesandbox.io/s/select-component-doesnt-respect-query-prop-dlih7

Steps to reproduce

  1. Import the Select component from @blueprintjs/select and render
  2. Pass the query prop to a Select component
  3. Click the rendered Select component and update the text input

Actual behavior

Text input is updated.

Expected behavior

As mentioned in the documentation of Select component, the expected behavior is that the text input is not changed and controlled via query prop.

inputProps Props to spread to the query InputGroup. Use query and onQueryChange instead of inputProps.value and inputProps.onChange to control this input.

Possible solution

Updating line 134 in select.tsx from:

value={listProps.query}

to this:

value={this.props.query || listProps.query}

solves the problem. It seems like the query prop is never directly passed to the input group. QueryList component is the one who controls the query of InputGroup in Select component. It initializes its internal query state with the query prop, but from that point onward, it doesn't respect the query prop of Select component and send its internal state to InputGroup.

贡献者指南