美文网首页
React-Select 使用

React-Select 使用

作者: Mokaffee | 来源:发表于2019-03-28 10:29 被阅读0次

学习资料
react-select github
v2 - display icon in selected option
Github React-Select Demo: Mokaffe/react-tutorial

React-Select 介绍

React-Select 是 Select Component for React.js.
可在 react-select.com 网站看在线demo和使用文档。

It represents a whole new approach to developing powerful React.js components that just work out of the box, while being extremely customizable.

现在是React-Select Version 2 版本,它代表了一种开发功能强大的React.js组件的全新方法,这些组件只需开箱即用,同时具有极高的可定制性。

See our upgrade guide for a breakdown on how to upgrade from v1 to v2.
The old docs and examples will continue to be available at v1.react-select.com.

如果之前是使用react-select v1 版本,可以查看upgrade guide去进行升级v2操作,v1版本的文档和例子在 v1.react-select.com.

React-Select 的一些特色:

Improvements include:

  • Flexible approach to data, with customisable functions
  • Extensible styling API with emotion
  • Component Injection API for complete control over the UI behaviour
  • Controllable state props and modular architecture
  • Long-requested features like option groups, portal support, animation, and more

React-Select 使用

一些常用的props

  • autoFocus - focus the control when it mounts(这个props是boolean 值,当react-select组件mount后,自动选中到select 输入框中)
  • className - apply a className to the control
  • classNamePrefix - apply classNames to inner elements with the given prefix( This is useful when styling via CSS classes instead of the Styles API approach.)
  • isDisabled - disable the control
  • isMulti - allow the user to select multiple values
  • isSearchable- allow the user to search for matching options
  • name - generate an HTML input with this name, containing the current value (会在select组件下面生成一个hide的input,input里面的value是当前select选中的值)
  • onChange - subscribe to change events
  • options - specify the options the user can select from
  • placeholder - change the text displayed when no option is selected
  • value - control the current value

参考docs props documentation 获取更多的信息。

上诉常见的props的效果图

`autoFocus ` 效果图.png className.png
classNamePrefix.png name.png onChange.png

Controllable Props(可控制的props)

You can control the following props by providing values for them. If you don't, react-select will manage them for you.(你可以通过为它们提供值去控制下面这些props,如果不这样做,react-select 将帮你管理它们。)

  • value / onChange - specify the current value of the control
  • menuIsOpen / onMenuOpen / onMenuClose - control whether the menu is open
  • inputValue / onInputChange - control the value of the search input (changing this will update the available options)

Question:

  • Control 是react-select 中的哪个组件?
  • menu 是react-select 中的哪个组件?
  • search input 是react-select 中的哪个组件?
    这些问题可以在参考文档replaceable component architecture部分找到答案,但是你想特别明确的知道这些是哪个部分,需要自己一一验证。或者可以使用classNamePrefix这个props,可以去审查元素,能够知道react-select中组件的分层。

If you don't provide these props, you can set the initial value of the state they control:(如果你没有提供这些props,你可以设置这些props掌控的状态的初始值)

  • defaultValue - set the initial value of the control
  • defaultMenuIsOpen - set the initial open value of the menu
  • defaultInputValue - set the initial value of the search input

高可定制

查看下面文档去使用一些定制功能:

使用react-select时遇到需要修改默认样式

单选后鼠标光标在输入框的最前面

单选的时候,如果想要在输入框清除选中的数据,光标在输入框的最前面,而不是在选中数据的后面。UX期希望将光标移到选中值的后面。

image.png image.png image.png

参考文档Styles部分.

  • clearIndicator
  • container
  • control
  • dropdownIndicator
  • group
  • groupHeading
  • indicatorsContainer
  • indicatorSeparator
  • input
  • loadingIndicator
  • loadingMessage
  • menu
  • menuList
  • menuPortal
  • multiValue
  • multiValueLabel
  • multiValueRemove
  • noOptionsMessage
  • option (这个是控制下拉列表中单个选项的样式)
  • placeholder
  • singleValue
  • valueContainer

定制下拉列表的样式

react-select 默认的下拉列表的选项都是字符串,设计稿中的选项是由用户名和email组合成上下层级的选项,所以需要定制Option这个组件。


image.png
image.png
image.png

参考解决方法v2 - display icon in selected option
参考文档replaceable component architecture部分
React-select 允许你用自己的组件替换内部的组件,可替换的组件有:

  • ClearIndicator
  • Control
  • DropdownIndicator
  • Group
  • GroupHeading
  • IndicatorsContainer
  • IndicatorSeparator
  • Input
  • LoadingIndicator
  • Menu
  • MenuList
  • LoadingMessage
  • NoOptionsMessage
  • MultiValue
  • MultiValueContainer
  • MultiValueLable
  • MultiValueRemove
  • Option
  • Placeholder
  • SelectContainer
  • SingleValue
  • ValueContainer

相关文章

网友评论

      本文标题:React-Select 使用

      本文链接:https://www.haomeiwen.com/subject/kfqvjqtx.html