<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Ant Design 4.0 正式版來(lái)了:Form、Table 重做,Icon 體積更小

          共 4415字,需瀏覽 9分鐘

           ·

          2020-02-29 23:27

          de602c524b62950661e0b356c7089628.webp

          原文鏈接:https://zhuanlan.zhihu.com/p/109633620

          引言

          我們?cè)?SEE Conf 之際發(fā)布了 4.0 rc 版本。經(jīng)過(guò) 1 個(gè)多月的反饋收集和調(diào)整之后,我們終于迎來(lái)了 4.0 的正式版!感謝在此期間每一位提供反饋、建議以及貢獻(xiàn)的人。我們會(huì)結(jié)合 rc 版本已經(jīng)涉及的更新以及一些比較重要的新增內(nèi)容于此進(jìn)行列舉。完整的更新文檔可以點(diǎn)擊此處[1]。v4 文檔地址:https://ant.design[2]

          需要注意的是,v3 版本于 2019 年 12 月合入 3.x-stable 分支并進(jìn)入維護(hù)狀態(tài)。我們?nèi)匀粫?huì)為 v3 版本進(jìn)行半年的維護(hù)工作。維護(hù)截止日期為 2020 年 5 月。

          設(shè)計(jì)規(guī)范升級(jí)

          我們將基礎(chǔ)圓角由 4px 調(diào)整為 2px。中后臺(tái)產(chǎn)品以效率為第一優(yōu)先級(jí),圓角樣式作為 UI 上的重要細(xì)節(jié),更小的圓角從視覺(jué)上減少界面細(xì)節(jié),提升了信息閱讀效率。此外,我們對(duì)陰影進(jìn)行了調(diào)整,使其更符合真實(shí)陰影,也同時(shí)將信息層級(jí)更好體現(xiàn)。ac360a8e6ef6cf343781f1e9599d94d0.webp9fb2da345a07a870b64fb055408f891e.webp

          暗色主題

          我們基于 v3 版本的色彩系統(tǒng)進(jìn)行了升級(jí),v4 提供了暗色主題。你可以在頁(yè)面中點(diǎn)擊切換主題功能查看暗色主題效果:9c55ea7537b82cc8d24499b593b774f2.webp

          bded9e861090cebe21e3b843831fa44a.webp

          無(wú)邊框組件

          在業(yè)務(wù)中,我們發(fā)現(xiàn)有些場(chǎng)景會(huì)存在輕量級(jí)的選擇組件。因而我們提供了一種新的無(wú)邊框樣式,讓開(kāi)發(fā)者可以更簡(jiǎn)單的嵌入這些組件而不用額外覆蓋樣式。491285664850e2287f187786d3db3669.webp41d787b913ce4c3f59e4a370926c6c6a.webp

          兼容性調(diào)整

          Ant Design 3.0 為了兼容舊版 IE 做出了非常多的努力。然而根據(jù)業(yè)界統(tǒng)計(jì),IE9/10 瀏覽器無(wú)論是在全球還是在國(guó)內(nèi)份額都在隨著 Windows 系統(tǒng)更新而在不斷縮減。我們?cè)?4.0 版本,停止對(duì) IE 9/10 的支持工作(但仍然會(huì)支持 IE 11)。因而過(guò)去一些低性能的組件,也會(huì)隨著新的 css 特性而獲得性能提升。

          與此同時(shí),我們也將 v4 依賴的 React 最低版本要求升級(jí)到了 React 16.9。這意味著,v4 版本將會(huì)提供更多的 hooks 以簡(jiǎn)化你的代碼。

          此外,我們也將在 v3 版本警告的一些廢棄 API 進(jìn)行了移除。我們強(qiáng)烈建議你將當(dāng)前項(xiàng)目升級(jí)到 v3 的最后一個(gè)版本,并根據(jù) warning 信息將廢棄 API 進(jìn)行更新。

          更小的尺寸

          [email protected] 中,我們引入了 svg 圖標(biāo)(為何使用 svg 圖標(biāo)?[3])。使用了字符串命名的圖標(biāo) API 無(wú)法做到按需加載,因而全量引入了 svg 圖標(biāo)文件,這大大增加了打包產(chǎn)物的尺寸。在 4.0 中,我們調(diào)整了圖標(biāo)的使用 API 從而支持 tree shaking,減少 antd 默認(rèn)包體積約 150 KB(Gzipped)。

          舊版 Icon 使用方式將被廢棄:

          import { Icon, Button } from 'antd';

          const Demo = () => (



          );

          4.0 中會(huì)采用按需引入的方式:d96700eb7aa7ced860cef72bb0e28a24.webp

          此外,我們也對(duì)相關(guān)依賴進(jìn)行了精簡(jiǎn),從而降低打包尺寸(Gzipped):1d13ca306a45d3e00ae927965b3b246b.webpb36528556209a0d15741dee046e703e3.webp

          組件重做

          Form 重做

          Form 作為高頻使用的組件,其 API 略顯冗余。用戶需要通過(guò) Form.create 的 HOC 方式獲得表單實(shí)例,而通過(guò) form.getFieldDecorator 來(lái)對(duì)組件進(jìn)行數(shù)據(jù)綁定。此外,每次數(shù)據(jù)變更便會(huì)進(jìn)行整個(gè)表單的重新渲染,這使得在大數(shù)據(jù)表單中性能堪憂。在 v4 版本中,F(xiàn)orm 將自帶表單實(shí)例,你可以直接通過(guò) Form.Item 的 name 屬性進(jìn)行數(shù)據(jù)綁定,從而簡(jiǎn)化你的代碼:c1ef9cebd5f6257a3ff7f53aedf3cb2b.webp

          我們發(fā)現(xiàn)大多數(shù)場(chǎng)景下,開(kāi)發(fā)者其實(shí)只關(guān)注表單提交成功的值。因而我們提供了 onFinish ,其只會(huì)在表單驗(yàn)證通過(guò)后觸發(fā),而 validateFields 不在需要。

          此外,F(xiàn)orm 提供了 hooks 方法 Form.useForm 允許你對(duì)表單示例進(jìn)行控制:

          const [form] = Form.useForm();

          React.useEffect(() => {
          form.setFieldValues({ ... });
          });

          <Form form={form} />

          同時(shí),我們提供了 Form.List 組件,使你可以非常方便的實(shí)現(xiàn)列表字段的控制:

          "names">
          {(fields, { add, remove }) => (
          <div>
          {fields.map(field) => <Form.Item {...field}><Input />Form.Item>
          }
          <Button onClick={() => add(initialValue)}>AddButton>
          div>
          }
          </Form.List>

          Table 重做

          由于我們提升了兼容性的最低要求,我們改成使用 sticky 樣式進(jìn)行固定列的實(shí)現(xiàn),因而大大減少了表單擁有固定列時(shí)的性能消耗。而對(duì)于不支持 sticky 的 IE 11,我們采取降級(jí)處理。

          同時(shí),我們提供了新的 summary API 用于實(shí)現(xiàn)總結(jié)行的效果:d5e33b8b2fe25e5b3f40cd733db8dd94.webpac0cc16711e55bd88e9793165b77f0ad.webp對(duì)于 sorter 提供了多列排序的功能:77d3278880e4ba73ca0a5f4c4b56ea52.webp1caddd6af49a1b49ebab5224e87e9042.webp此外,我們調(diào)整了底層邏輯,現(xiàn)在 fixedColumnexpandable、scroll 可以混合使用。提供了 body API 用于自定義表格內(nèi)容實(shí)現(xiàn),你可以由此實(shí)現(xiàn)諸如虛擬滾動(dòng)的效果。

          全新 DatePicker、 TimePicker 與 Calendar

          我們對(duì)日期組件進(jìn)行了整體重寫,因而將其與 moment 進(jìn)行解耦。你可以通過(guò)我們提供的 generate 方法生成自定義日期庫(kù)的 Picker 組件。為了保持兼容,默認(rèn)的 Picker 組件仍然使用 moment 作為日期庫(kù)。自定義日期庫(kù)請(qǐng)參考此處[4]。

          此外,我們提供了全套的時(shí)間、日期、周、月、年選擇器以及對(duì)應(yīng)的范圍選擇器。你可以通過(guò) picker 屬性進(jìn)行設(shè)置,不再需要通過(guò) mode 的受控方法來(lái)實(shí)現(xiàn)特地的選擇器:

          <RangePicker />
          <RangePicker showTime />
          <RangePicker picker="week" />
          <RangePicker picker="month" />
          <RangePicker picker="year" />

          在范圍選擇器上,我們也對(duì)交互進(jìn)行了優(yōu)化。你現(xiàn)在可以單獨(dú)的選擇開(kāi)始或結(jié)束時(shí)間,并且完美優(yōu)化了手動(dòng)輸入日期的體驗(yàn)。f04987d9ca84f4105fe6104d12e5ebac.webp

          03d9bb5003d14e1aea2d2efb25514afe.webp

          Notification/Modal 提供 Hooks

          在過(guò)去版本,你或許會(huì)遇到 Modal.xxxNotification.xxx 調(diào)用方法無(wú)法獲得 Context 的問(wèn)題。這是由于我們對(duì)于這些語(yǔ)法糖會(huì)額外通過(guò) ReactDOM.render 創(chuàng)建一個(gè) React 實(shí)例,這也導(dǎo)致了 context 丟失的問(wèn)題。在新版中,我們提供了 hooks 方法,讓你可以將節(jié)點(diǎn)注入到需要獲得 context 的地方:

          const [api, contextHolder] = notification.useNotification();

          return (
          <Context1.Provider value="Ant">
          {/* contextHolder is in Context1 which mean api will not get context of Context1 */}
          {contextHolder}
          <Context2.Provider value="Design">
          {/* contextHolder is out of Context2 which mean api will not get context of Context2 */}
          Context2.Provider>

          Context1.Provider>
          );

          虛擬滾動(dòng)

          v4 中,我們將 Tree、TreeSelect、Select 進(jìn)行了改造,其默認(rèn)使用虛擬滾動(dòng)技術(shù)進(jìn)行性能優(yōu)化以承載大數(shù)據(jù)量的選項(xiàng)渲染。

          Living demo[5]

          此外,也對(duì)鍵盤交互以及無(wú)障礙進(jìn)行了優(yōu)化。

          更多新功能/特性/優(yōu)化部分

          • ConfigProvider 提供 direction 配置以支持 rtl 語(yǔ)言國(guó)際化。
          • Form 與 ConfigProvider 支持 size 設(shè)置包含組件尺寸。
          • Typography 增加 suffix 屬性。
          • Progress 增加 steps 子組件。
          • TextArea 支持 onResize。
          • Grid 使用 flex 布局。
          • ......

          你可以點(diǎn)擊此處[6]查看完整更新日志。

          如何升級(jí)

          為了盡可能簡(jiǎn)化升級(jí),我們保持了最大兼容。但是仍然有一部分 breaking change 需要注意。你可以首先嘗試使用我們提供的 codemod 工具進(jìn)行遷移,對(duì)部分無(wú)法遷移的內(nèi)容進(jìn)行手工遷移。升級(jí)請(qǐng)參考該文檔[7]。

          以上

          Ant Design 4.0 的誕生離不開(kāi)社區(qū)志愿者的貢獻(xiàn)與支持,感謝 @saeedrahimi[8] 實(shí)現(xiàn)了 rtl 的國(guó)際化功能,@shaodahong[9] 對(duì)于兼容包的貢獻(xiàn),以及每個(gè)參與幫助開(kāi)發(fā)的人。是你們?yōu)殚_(kāi)源的貢獻(xiàn)讓 Ant Design 變得更加美好!8b0b20760807beeee3b2ca8af8e53e71.webp0939bb3b2509bbaaf1296db3b3199fb4.webp

          • Ant Design 4.0 設(shè)計(jì)體系進(jìn)階!設(shè)計(jì)資產(chǎn)不斷豐富,設(shè)計(jì)工具層出不窮,來(lái)新版官網(wǎng)[10]看看吧 ^_^
          • 歡迎到 知乎問(wèn)答[11] 與我們互動(dòng)。

          參考資料

          [1]

          點(diǎn)擊此處: https://link.zhihu.com/?target=https%3A//ant.design/changelog-cn

          [2]

          https://ant.design: https://link.zhihu.com/?target=https%3A//ant.design/

          [3]

          為何使用 svg 圖標(biāo)?: https://link.zhihu.com/?target=https%3A//github.com/ant-design/ant-design/issues/10353

          [4]

          此處: https://link.zhihu.com/?target=https%3A//ant.design/docs/react/replace-moment-cn

          [5]

          Living demo: https://link.zhihu.com/?target=https%3A//ant.design/components/select-cn/%23components-select-demo-big-data

          [6]

          此處: https://link.zhihu.com/?target=https%3A//ant.design/changelog-cn

          [7]

          該文檔: https://link.zhihu.com/?target=https%3A//ant.design/docs/react/migration-v4-cn

          [8]

          @saeedrahimi: https://link.zhihu.com/?target=https%3A//github.com/saeedrahimi

          [9]

          @shaodahong: https://link.zhihu.com/?target=https%3A//github.com/shaodahong

          [10]

          新版官網(wǎng): https://link.zhihu.com/?target=https%3A//ant.design/

          [11]

          知乎問(wèn)答: https://www.zhihu.com/question/33629737




          推薦閱讀




          2020 年你應(yīng)該知道的 React 庫(kù)

          從 React 歷史的長(zhǎng)河里聊虛擬DOM及其價(jià)值

          從零開(kāi)始寫一個(gè) Fiber 版的 React

          瀏覽 168
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  五月丁香性爱 | 丰满熟妇中文字幕精品 | 俺去精品在线 | 中国女人操逼 | 在线小黄片 |