当前位置: 首页 > 科技观察

Adobe的组件库和工具ReactSpectrum入门

时间:2023-03-12 09:51:05 科技观察

ReactSpectrum是Adob??e开发的组件库和工具,可帮助您构建响应迅速、可访问且强大的用户体验。帮助开发人员使用React构建功能丰富的应用程序。https://react-spectrum.adobe.com/index.html它包含三个主要库,您可以根据需要一起使用或单独使用:ReactSpectrum是Adob??e设计系统Spectrum的一个实现。ReactAria是一个钩子集合,用于提供可访问的UI原语,例如国际化和跨所有设备的一致交互。ReactStately是另一个钩子集合,但专注于启用跨平台状态管理,ReactSpectrum与ReactSpectrum相结合,让您在开发超越最低限度的Web应用程序时领先一步,以提供出色的用户体验。这篇文章将帮助您了解ReactSpectrum试图解决什么问题,以及如何开始使用它。设计系统的问题即使借助React、Vue和Angular等现代前端库,创建满足UI一致性、可访问性、国际化和可用性高标准的Web应用程序仍然相当困难。这就是设计系统如今如此流行的原因。但是创建一个符合UI标准的设计系统既费时又费钱。根据我的经验,我总是看到开发人员和设计人员过分关注组件样式,而忽略了可访问性和国际化的基础知识。一个公司刚起步的时候,没有人会想这个!考虑到本地化工作的难度,这是可以理解的。您需要考虑字符串翻译、本地化日期和数字格式、启用从右到左的交互等等。这就是ReactSpectrum如此有价值的原因。它利用Adob??e在设计和开发功能丰富的用户界面方面的经验,让您在实施所有那些让用户在所有设备上获得出色体验的细节方面抢占先机。ReactSpectrum如何帮助您ReactSpectrum为您提供适合交互和不同屏幕尺寸的组件。它包括全屏阅读器和键盘导航支持辅助功能。这个库提供的组件应该遵循Spectrum的设计指南作为道具,所以你不会使用常规的HTML属性,如“class”和“aria-label”。它还实现了主题化,因此您可以轻松切换应用程序的主题。要使用ReactSpectrum,您需要安装库包:npminstall@adobe/react-spectrum,然后使用其提供者容器来定义其主题、区域设置和其他应用程序设置:import{Provider,defaultTheme,Button}from'@adobe/react-spectrum';functionApp(){return(HelloReactSpectrum!);}ReactSpectrum还为你提供了Flex和GridLayout系统,这样您就可以选择您的团队将使用的布局。import{Flex}from'@adobe/react-spectrum'//组件将流染为:而网格组件:import{Grid}from'@adobe/react-spectrum'//组件这将呈现为:除了所有基于组件的漂亮UI之外,ReactSpectrum还包含有关如何测试您使用它构建的应用程序的指南,因此如果您有兴趣根据Adob??e的UI元素设计来构建您的应用程序AReact应用程序,你不会后悔使用它ReactAria的工作原理ReactAria的主要目的是帮助你实现所有人在所有设备上的可访问性。这包括所有类型的残疾:视觉、听觉、运动和认知障碍。ReactAria的伟大之处在于每个挂钩都分组在一个特定的包下,您可以单独安装。这将允许您逐步逐步将钩子引入组件。ReactAria具有组件挂钩,可让您跨设备构建一致的无样式组件,但您可以根据需要设置它们的样式。例如,有一个useButton钩子可以呈现一个按钮:原生HTML);alert('Buttonpressed!')}>TestReactAriaA的另一个独特功能function是它的焦点钩子。FocusRing通过为元素指定特定样式(通常是蓝色边框)来帮助键盘用户确定页面上的哪个元素具有键盘焦点。//style.button{-webkit-appearance:none;appearance:none;background:green;border:none;color:white;font-size:14px;padding:4px8px;}.button.focus-ring{outline:2pxsoliddodgerblue;outline-offset:2px;}//componentTest当你不使用CSS类(比如样式组件)对于样式,您可以使用useFocusRing钩子:,background:'green',border:'none',color:'white',fontSize:14,padding:'4px8px',outline:isFocusVisible?'2pxsoliddodgerblue':'none',outlineOffset:2}}>测试);}最后,ReactAria还提供了对国际化的支持,以帮助您的应用程序适应特定的语言或地区。i18nProvider组件允许您使用应用程序定义的区域设置覆盖浏览器中的默认区域设置:import{I18nProvider}from'@react-aria/i18n';ReactStately的工作原理ReactStately是一个钩子库,可为您的设计系统提供跨平台状态管理。它可以在web、react-native或任何其他平台上运行。例如,您可以实现useRadioGroupState来帮助存储单选按钮组的状态,而无需定义您自己的onChange函数。import{useRadioGroupState}from'@react-stately/radio';functionRadioGroup(props){letstate=useRadioGroupState(props);return(<>/>);alert(`Selected${value}`)}/>大多数ReactStately的钩子都像具有不变性的常规useState钩子。将它用于网络时,它可以与ReactAria配对以提供组件可访问性和用户交互。就像ReactAria一样,ReactStately可以增量实现。总结许多公司和团队只是没有资源来优先考虑可访问性、国际化、全键盘导航和触摸交互等功能。我们大多数人都忙于发布核心应用程序功能。这就是ReactSpectrum对许多团队如此有价值的原因。这些库旨在让您可以逐渐将您的应用程序逻辑共享给不同设备上的许多组件。使用ReactSpectrum,您无需投入时间和金钱来创建支持可访问性和国际化的设计系统。