成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

請停止在 React 中使用“&&”進行條件渲染

開發 前端
React 是一個目前流行的前端框架之一,可以幫助我們高效地構建用戶界面。

React 是一個目前流行的前端框架之一,可以幫助我們高效地構建用戶界面。

但是在使用React進行開發時,我們卻不能正確使用&&,很容易導致UI錯誤。

因此,我們需要知道,&&運算符導致的React UI界面錯誤。

如何工作?

我們應該用什么代替&&?

1. &&運算符導致的React UI界面錯誤

我經常需要編寫需要從服務器端獲取數據的頁面,這些數據用于呈現列表。如果數據的長度為0,則不應顯示。

const App = () => {
  const [list, setList] = React.useState([]);
  const fetchList = () => {
    // Simulate fetching data from the server via setTimeout
    setTimeout(() => {
      setList([])
    }, 1000)
  }


  React.useEffect(() => {
    fetchList()
  }, [])
  return (
    list.length && (
      <div className="name-list-container">
        {list.map((name) => {
          return <div className="name-list-item">{name}</div>;
        })}
      </div>
    )
  );
};
ReactDOM.render(<App />, document.getElementById('app'))

眼見為實,我的朋友們,所以請點擊此Codepen的鏈接進行查看。

地址:https://codepen.io/qianlong/pen/BarvKbW?editors=1010

你會注意到,當 list 是一個空數組時,頁面將呈現 0 而不是什么都沒有。

我的天哪,這到底是怎么回事?

2.&& 是如何工作的?

這是一個 React 錯誤嗎?值得慶幸的是,這個問題的原因不是因為 React 犯了錯誤,而是與 Javascript 本身的工作方式有關。

來自 MDN的解釋:當且僅當所有操作數都為真時,一組布爾操作數的邏輯與 (&&) 運算符(邏輯合取)才為真。否則就是假的。

一般運算符返回從左到右計算時遇到的第一個假操作數的值,或者如果它們都是真值,則返回最后一個操作數的值。

讓我們學習一個非常簡單的例子,我想你會很快理解的。

const a = 0
const b = "React"
const c = 1
const d = "Javascript"


console.log(a && b) // 0
console.log(c && d) // Javascript

當你在代碼中使用a && b時,如果a為0,則直接返回,不再計算b的值。

你一定明白為什么上面的 React 例子顯示 0 了。

3.我們應該用什么來代替&&?

&& 運算符很容易出錯,我們是否應該放棄使用它呢?

不,我們不應該那樣做。我們可以嘗試這3種方式來避免這個問題。

3.1 使用!!list.length

我們可以把數組的長度轉成布爾值,就不會再出現這個錯誤了。

// 1. Convert list.length to boolean
!!list.length && <Component list={list} />

3.2 使用 list.length >= 1

和上面的原理一樣,我們用另一種方式將其轉為布爾值。

// 2. Controlled by specific logic
list.length >= 1 && <Component list={list} />;

3.3 使用三元表達式

如果您的應用程序不是特別復雜并且僅使用 1 或 2 個三元表達式即可解決,我會推薦它。

// 3. Use ternary expressions and null
list.length ? <Component list={list} /> : null;

結尾

以上這就是這篇文章的全部內容!如果你覺得有用的話,請點贊我,關注我,你將會閱讀到更多的優質文章。

最后,感謝你的閱讀。

責任編輯:華軒 來源: web前端開發
相關推薦

2018-10-08 08:00:00

前端ReactJavaScript

2024-11-25 07:00:00

箭頭函數JavaScriptReact

2025-06-17 08:10:45

2021-03-17 11:21:06

React數據存儲

2023-10-04 07:25:59

JavaScriptpromises

2023-12-05 15:58:06

React開發

2020-10-31 21:59:37

Python列表開發

2024-05-10 12:29:30

接口類型

2020-10-23 09:57:23

TypeScriptany代碼

2022-05-24 14:37:49

React條件渲染

2024-11-26 08:30:33

2011-12-08 10:24:53

JavaNIO

2023-10-28 16:22:21

Go接口

2021-11-29 22:59:34

Go Dockertest集成

2024-02-07 11:44:20

NestJSRxJS異步編程

2020-08-02 22:42:25

JavaScript開發

2022-11-30 15:01:11

React技巧代碼

2022-06-10 08:01:17

ReduxReact

2019-12-12 13:50:27

strace追蹤系統調用Linux

2020-05-26 11:39:05

WebReact組件
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 中文字幕一级毛片 | 久久久91精品国产一区二区三区 | 亚洲天堂男人的天堂 | 久久久久久久久久久高潮一区二区 | 999久久久国产精品 欧美成人h版在线观看 | 欧美在线视频免费 | www.成人在线视频 | 久久精品伊人 | 中文字幕av网站 | 精品国产一区二区三区成人影院 | 91国产视频在线 | 狠狠影院| 一级在线观看 | 成人免费视频观看 | 91中文字幕在线 | 成人一区二区在线 | 国产美女在线观看 | 九色 在线 | 全免费a级毛片免费看视频免费下 | 午夜精品久久久久久久星辰影院 | 国产成人在线一区二区 | 亚洲精品一区二三区不卡 | 精品欧美一区二区在线观看欧美熟 | 国产日韩久久 | 久久久精 | 色吊丝2288sds中文字幕 | 久久蜜桃av一区二区天堂 | 成人免费在线观看 | 毛片在线视频 | 成人激情免费视频 | 国产在线视频一区 | 91网站视频在线观看 | 亚洲欧洲在线视频 | 亚洲品质自拍视频 | 大象视频一区二区 | 超碰天天 | 国产精品毛片一区二区在线看 | 99re在线视频 | 国产精品欧美一区二区三区不卡 | 国产精华一区 | 97操操 |