成人免费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條件渲染

2011-12-08 10:24:53

JavaNIO

2024-11-26 08:30:33

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

2020-05-26 11:39:05

WebReact組件

2019-12-12 13:50:27

strace追蹤系統調用Linux
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 91精品导航 | 精品免费国产一区二区三区四区 | 国产人免费人成免费视频 | www.亚洲一区 | 视频一区二区中文字幕 | 中文亚洲视频 | 精精国产xxxx视频在线播放7 | 国产一区二区在线免费观看 | 91污在线| 最新高清无码专区 | 久久亚 | 91高清视频在线观看 | 欧美大片一区 | 在线视频亚洲 | 午夜影院在线观看 | 国产在线1区 | 国产1区2区在线观看 | 91精品国产综合久久久动漫日韩 | 九九激情视频 | 亚洲精品视频在线看 | 亚洲精品在线91 | 色婷婷激情综合 | 亚洲国产黄| 欧美一区二区大片 | 日韩色在线 | 亚洲欧洲视频 | 日韩一区二区三区视频 | 国产成人免费视频网站高清观看视频 | 日韩一级| 精品亚洲二区 | 色爱av| 999精品视频 | 午夜亚洲| 中文字幕 在线观看 | 青青久草 | 奇米影视77| 精品久久久久久久 | 自拍偷拍3p | 国产日韩一区二区三区 | 亚洲v日韩v综合v精品v | 成人h动漫亚洲一区二区 |