自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

React Spectrum,Adobe的組件庫和工具入門

開發(fā) 開發(fā)工具
React Spectrum是一個由Adobe開發(fā)的組件庫和工具,可幫助你構建自適應,可訪問且健壯的用戶體驗。幫助開發(fā)者使用React構建功能豐富的應用程序。

React Spectrum是一個由Adobe開發(fā)的組件庫和工具,可幫助你構建自適應,可訪問且健壯的用戶體驗。幫助開發(fā)者使用React構建功能豐富的應用程序。

[[339306]]

https://react-spectrum.adobe.com/index.html

它具有三個主要庫,你可以根據需要將它們一起使用或分別使用:

  • React Spectrum是Adobe設計系統(tǒng)Spectrum的一個實現(xiàn)。
  • React Aria是一個鉤子的集合,用于提供可訪問的UI基元,如國際化和在所有設備上的一致交互。
  • React Stately是鉤子的另一個集合,但專注于啟用跨平臺狀態(tài)管理

結合在一起,React Spectrum讓你在開發(fā)Web應用時有了一個良好的開端,超越了最低限度的要求,提供了卓越的用戶體驗。

這篇文章將幫助你了解React Spectrum想要解決什么問題,以及如何開始使用它。

設計系統(tǒng)的問題

即使有React、Vue和Angular等現(xiàn)代前端庫的幫助,要創(chuàng)建一個符合UI一致性、可訪問性、國際化和可用性等高標準的Web應用仍然相當困難。這也是為什么如今設計系統(tǒng)如此流行的原因。

但是創(chuàng)建符合UI標準的設計系統(tǒng)既費時又費錢。從我的經驗來看,我總能看到開發(fā)人員和設計人員把過多的精力放在組件風格上,而把可訪問性和國際化排除在基礎之外。當公司剛起步時,沒人會考慮這些!

考慮到本地化工作的難度,這一點是可以理解的。你需要考慮字符串翻譯,本地化日期和數(shù)字格式,啟用從右到左的交互等等。

這就是為什么React Spectrum如此有價值的原因。它利用Adobe在設計和開發(fā)功能豐富的用戶界面方面的經驗,讓你在實現(xiàn)所有這些瑣碎的細節(jié)方面有一個好的開端,這些細節(jié)使得所有設備的用戶體驗都很好。

[[339307]]

React Spectrum如何幫助你

React Spectrum為你提供了適合交互和不同屏幕尺寸的組件。它包括全屏閱讀器和鍵盤導航支持,可訪問性。

該庫提供的組件應遵循Spectrum的設計指南作為道具,因此你將不會使用常規(guī)的HTML屬性,例如“class”和“aria-label”。它還實現(xiàn)了主題設置,因此你可以輕松切換應用程序的主題。

要使用React Spectrum,你需要安裝庫軟件包:

  1. npm install @adobe/react-spectrum 

然后使用其提供程序容器定義其主題,區(qū)域設置和其他應用程序設置:

  1. import {Provider, defaultTheme, Button} from '@adobe/react-spectrum'; 
  2. function App() { 
  3.   return ( 
  4.     <Provider theme={defaultTheme}> 
  5.       <Button variant="cta">Hello React Spectrum!</Button> 
  6.     </Provider> 
  7.   ); 

React Spectrum還為你提供了Flex和Grid兩種布局系統(tǒng),所以你可以選擇你的團隊要用哪種布局。

  1. import {Flex} from '@adobe/react-spectrum' 
  2. // the component 
  3. <Flex direction="column" width="size-2000" gap="size-100"> 
  4.   <View backgroundColor="celery-600" height="size-800" /> 
  5.   <View backgroundColor="blue-600" height="size-800" /> 
  6.   <View backgroundColor="magenta-600" height="size-800" /> 
  7. </Flex> 

將渲染為:

React Spectrum,Adobe的組件庫和工具入門

而Grid組件:

  1. import {Grid} from '@adobe/react-spectrum' 
  2. // the component 
  3. <Grid 
  4.   areas={['header  header', 'sidebar content', 'footer  footer']} 
  5.   columns={['1fr', '3fr']} 
  6.   rows={['size-1000', 'auto', 'size-1000']} 
  7.   height="size-6000" 
  8.   gap="size-100"> 
  9.   <View backgroundColor="celery-600" gridArea="header" /> 
  10.   <View backgroundColor="blue-600" gridArea="sidebar" /> 
  11.   <View backgroundColor="purple-600" gridArea="content" /> 
  12.   <View backgroundColor="magenta-600" gridArea="footer" /> 
  13. </Grid> 

這將渲染為:

React Spectrum,Adobe的組件庫和工具入門

除了所有好的基于組件的UI之外,React Spectrum還包括如何測試你用它構建的應用程序的指南,所以如果你有興趣按照Adobe對其UI元素的設計來構建你的React應用程序,你不會后悔使用它。

React Aria如何工作

React Aria的主要目的是幫助你實現(xiàn)所有人在所有設備上的可訪問性。這包括各種類型的殘疾人:視覺,聽覺,運動和認知障礙。

React Aria的偉大之處在于,每個鉤子都被歸納在一個特定的包下,你可以單獨安裝。這將使你可以將鉤子逐步地逐步引入到組件中。

React Aria有組件鉤子,允許你在不同的設備上構建一致的非風格化組件,當然如果你想的話,你可以將其風格化。

例如,有一個useButton鉤子,可以渲染一個具有以下功能的按鈕:

  • 原生HTML<button>支持
  • <a>和通過ARIA支持的自定義元素類型
  • 鼠標和觸摸事件處理以及按狀態(tài)管理
  • 鍵盤焦點管理和跨瀏覽器標準化
  • 鍵盤事件支持空格鍵和Enter鍵

這是實現(xiàn)鉤子的方法:

  1. function Button(props) { 
  2.   let ref = useRef(); 
  3.   let {buttonProps} = useButton(props, ref); 
  4.   let {children} = props; 
  5.   return ( 
  6.     <button {...buttonProps} ref={ref}> 
  7.         {children} 
  8.         </button> 
  9.     ); 
  10. <Button onPress={() => alert('Button pressed!')}>Test</Button> 

 

React Aria的另一個獨特功能是其焦點鉤子。FocusRing通過給元素賦予特定的樣式,通常是一個藍色的邊框,幫助鍵盤用戶確定頁面上哪個元素具有鍵盤焦點。

  1. // style 
  2. .button { 
  3.   -webkit-appearance: none; 
  4.   appearance: none; 
  5.   background: green; 
  6.   border: none; 
  7.   color: white; 
  8.   font-size: 14px; 
  9.   padding: 4px 8px; 
  10. .button.focus-ring { 
  11.   outline: 2px solid dodgerblue; 
  12.   outline-offset: 2px; 
  13.  
  14. // component 
  15. <FocusRing focusRingClass="focus-ring"> 
  16.   <button className="button">Test</button> 
  17. </FocusRing> 

 

當你不使用CSS類(例如樣式組件)進行樣式設置時,可以使用useFocusRing鉤子:

  1. function Example() { 
  2.   let {isFocusVisible, focusProps} = useFocusRing(); 
  3.   return ( 
  4.       <button 
  5.         {...focusProps} 
  6.         style={{ 
  7.           WebkitAppearance: 'none', 
  8.           appearance: 'none', 
  9.           background: 'green', 
  10.           border: 'none', 
  11.           color: 'white', 
  12.           fontSize: 14, 
  13.           padding: '4px 8px', 
  14.           outline: isFocusVisible ? '2px solid dodgerblue' : 'none', 
  15.           outlineOffset: 2 
  16.         }}> 
  17.         Test 
  18.       </button> 
  19.     ); 

最后,React Aria還提供了對國際化的支持,以幫助你的應用程序適應特定的語言或地區(qū)。i18nProvider組件允許你使用應用程序定義的語言環(huán)境覆蓋瀏覽器中的默認語言環(huán)境:

  1. import {I18nProvider} from '@react-aria/i18n'; 
  2.  
  3. <I18nProvider locale="fr-FR"> 
  4.   <YourApp /> 
  5. </I18nProvider> 

React Stately如何工作

React Stately是一個鉤子庫,可為你的設計系統(tǒng)提供跨平臺狀態(tài)管理。它可以在Web,react-native或任何其他平臺上運行。

例如,你可以實現(xiàn)useRadioGroupState來幫助存儲一個Radio按鈕組的狀態(tài),而不需要定義自己的onChange函數(shù)。

  1. import {useRadioGroupState} from '@react-stately/radio'; 
  2. function RadioGroup(props) { 
  3.   let state = useRadioGroupState(props); 
  4.    
  5. return ( 
  6.     <> 
  7.       <label> 
  8.         <input 
  9.           type="radio" 
  10.           name={state.name} 
  11.           checked={state.selectedValue === 'dogs'} 
  12.           onChange={() => state.setSelectedValue('dogs')} 
  13.         /> 
  14.         Dogs 
  15.       </label> 
  16.       <label> 
  17.         <input 
  18.           type="radio" 
  19.           name={state.name} 
  20.           checked={state.selectedValue === 'cats'} 
  21.           onChange={() => state.setSelectedValue('cats')} 
  22.         /> 
  23.         Cats 
  24.       </label> 
  25.     </> 
  26.   ); 
  27.  
  28. <RadioGroup 
  29.   defaultValue="dogs" 
  30.   onChange={(value) => alert(`Selected ${value}`)} 
  31. /> 

React Stately的大多數(shù)鉤子就像帶有不可變性的常規(guī)useState鉤子一樣。將其用于Web時,可以將其與React Aria配對以提供組件的可訪問性和用戶交互。就像React Aria一樣,React Stately可以逐步實現(xiàn)。

總結

許多公司和團隊只是沒有資源來優(yōu)先考慮諸如可訪問性、國際化、全鍵盤導航和觸摸交互等功能。我們中的大多數(shù)人都在忙于發(fā)布核心應用功能。

這就是為什么React Spectrum對許多團隊如此有價值。這些庫的設計讓你可以在不同的設備上逐步將你的應用邏輯分享給許多組件。有了React Spectrum,你不必再投入時間和金錢去創(chuàng)建一個支持無障礙和國際化的設計系統(tǒng)。

 

 

責任編輯:趙寧寧 來源: 今日頭條
相關推薦

2015-07-03 10:41:47

ReactWebpack

2009-02-26 15:01:57

2019-03-13 10:10:26

React組件前端

2022-05-11 07:50:15

React UI組件庫前端

2023-06-14 08:01:13

ReactUI 組件庫

2013-06-26 11:09:34

編碼工具

2012-07-06 13:50:44

跨平臺工具Adobe Phone

2011-08-01 15:45:26

HTML 5

2021-09-02 18:46:40

React CSS 組件

2021-09-01 18:42:57

React Props組件

2019-07-20 23:30:48

開發(fā)技能代碼

2012-07-06 13:45:21

跨平臺工具Adobe AirFlex

2024-05-23 08:05:04

2019-01-18 13:13:40

Facebook 開發(fā)開源

2023-09-01 18:16:52

PythonR 語言Fortran

2024-10-11 17:00:20

2025-04-09 08:08:56

2021-07-09 08:33:35

React組件受控

2016-08-12 08:49:46

React NativFacebookNative

2017-02-28 21:57:05

React組件
點贊
收藏

51CTO技術棧公眾號