Java學習進階之React狀態保存

2020-12-16 廣州千鋒

狀態保存,是指再次加載頁面時還原表格狀態。在Vue中,我們可以非常便捷地通過標籤實現狀態的保存,該標籤會緩存不活動的組件實例,而不是銷毀它們。但是在React中並沒有這個功能,前端人員又該如何實現狀態保存呢?接下來千鋒廣州HTML5大前端培訓小編就給大家分享常用的幾個方法。

1、手動保存狀態

手動保存狀態,是比較常見的解決方式,可以配合React組件的componentWillUnmount生命周期,通過redux之類的狀態管理層對數據進行保存,通過componentDidMount周期進行數據恢復。

在需要保存的狀態較少時,這種方式可以比較快地實現我們所需功能,但在數據量大或者情況多變時,手動保存狀態就會變成一件麻煩事。為了不需要每次都關心如何對數據進行保存恢復,我們需要研究如何自動保存狀態。

2、通過路由實現自動狀態保存(通常使用react-router)

1)重寫組件,可參考react-live-route。重寫可以實現我們想要的功能,但成本也比較高,需要注意對原始功能的保存,以及多個react-router版本的兼容。

2)替換路由庫為react-keeper。完全替換掉路由方案是一個風險較大的事情,需要較為慎重地考慮。

3)基於組件現有行為做拓展,可參考react-router-cache-route。如果使用component或者render屬性,都無法避免路由在不匹配時被卸載掉的命運。但將children屬性當作方法來使用,我們就有手動控制渲染的行為的可能。

目前的狀態保存實現方式都有各自的問題,但這是十分常見的需求,因此我們一定要認真對待。

相關焦點

  • React 16.8 之 React Hook
    仔細看第一行我們引入了useState這個hook,就是這個hook讓我們的無狀態組件成為了一個有狀態的組件。State Hook 解決存儲持久化的方案我所知道的可以通過js存儲持久化狀態的方法有: class類、全局變量、DOM、閉包通過學習react hook源碼解析了解到是用閉包實現的~function useState(initialState
  • react的核心api-前端進階
    資源 1. react 2. create-r eact-app 起步 1. 安裝官方腳手架: npm install -g create-react-app 2.創建項目: create-react-app react-study 3.
  • 一個Java高級工程師的進階之路
    一個Java高級工程師的進階之路想必Java新手們都想知道如何成為一個Java高級工程師,小編整理了一下Java高級工程師必須具備的一些專業技能供大家參考,希望可以幫到大家!宏觀方面JAVA要想成為JAVA(高級)工程師肯定要學習JAVA。一般的程式設計師或許只需知道一些JAVA的語法結構就可以應付了。
  • 動力節點Java學院2021年Java學習路線圖最新出爐啦
    Java在程式語言排行榜中一直牢牢佔據榜首位置,幾乎所有的大中型網際網路的應用系統在伺服器端開發首選都是Java編程,正因如何吸引這不少年輕人投入該行業,Java雖不想其它程式語言那麼複雜,但是知識體系還是很龐大的,因此想要學好並非容易之事,不少想要跨入Java編程行業的同學們通過網絡搜索各式各樣的學習資料
  • 超強通用的React Native Tab控制器使用詳解-進階篇
    投稿人:hiphonezhu 地址:http://www.jianshu.com/p/b0cfe7f11ee7本文所講知識點在上一篇文章當中,我們學習了react-native-scrollable-tab-view的基本使用方式,包括基本Props的使用介紹等。
  • Java學習進階-Stream流
    list.add("張無忌"); list.stream().filter(name -> name.length() == 3).limit(3).forEach(name -> System.out.println(name));package com.p03Stream獲取流;import java.util.ArrayList
  • 精通react/vue組件設計之實現一個Tag(標籤)和Empty(空狀態)組件
    基於react實現一個Tag組件2.1. tag組件框架設計首先我們先根據需求將組件框架寫好,這樣後面寫業務邏輯會更清晰:import React from 'react'import classnames from 'classnames'
  • 《React 學習之道》中文版
    正文從這開始~the Road to learn React通往 React 實戰大師之旅:掌握 React 最簡單,且最實用的教程這本書目前支持 PDF、EPUB、MOBI、Kindle 多種格式下載,並支持 Leanpub 在線閱讀。本書介紹《React 學習之道》會教您一些 React 的基礎知識。
  • React + Redux + React-router 全家桶
    web端開發需要搭配React-dom使用import React from 'react';import ReactDOM from 'react-dom';const App = () => (  <div>      <
  • 好課資源共享:Mybatis講義_Java高薪訓練營.pdf [6.2M]
    Mybatis講義_Java高薪訓練營.pdf [6.2M]逆向進階逆向高級系列網絡網絡協議從入門到底層原理  數據結構享學課堂-數據結構與算法精品課  面試專題【享學】金九銀十」一線大廠面試專題【享學】一線網際網路大廠面試指導直播精品課
  • ReactNative學習資源大匯集
    ,方便大家學習,同時還有 [Awesome React Native系列],請收下!的打包 http://www.liaohuqiu.net/cn/posts/react-native-android-package/ReactNative之原生模塊開發並發布——iOS篇http://www.liuchungui.com/blog/2016/05/02/reactnativezhi-yuan-sheng-mo-kuai-kai-fa-bing-fa-bu-iospian
  • Vue、React、Angular之三國殺,web前端入坑第六篇(上)
    vue、react、angular對比和選擇 這個話題我在vue1.x 時代 2016年 就想寫了,可時光如梭,懶癌侵身,一個擱淺便是這麼多天。vue都2.5了,angular 都變成了另外一種框架了,不敢想,不敢想, JavaScript 開發框架發展的是如此之快。如果有不知道mvvm概念的同學,請先回顧我 入坑第五篇: 秒懂前端框架歷史和MVVM框架原理!
  • Java進階:基於TCP通信的網絡實時聊天室
    Socket網絡編程的知識和實戰案例,相對來說,比較系統地學習了基於TCP協議實現網絡通信,也是計算機網絡中重中之重,TCP/IP屬於網絡層,在java中,對該層的工作實現了封裝,在編程中,就更加容易地去實現通信,而不用顧及底層的實現。
  • java工程師的基本職責和進階之路
    那麼如何進階成一個java高級工程師呢:1.Java的基礎要想成為Java高級工程師,學習java是必不可少的。高級工程師需要對java技術進行更深入的研究。當然,編寫代碼通常需要一些設計模式的幫助,這要求您積累並學習逐步形成自己的代碼風格,我相信您的能力也會迅速提高。3.XMLXML有著強大的功能,以至於現在幾乎所有的系統都使用XML。它可以實現數據轉換、系統配置,甚至保存數據服務。因此,我們需要加強對XML語法和結構的理解,進一步推動我們開發的項目更加完善。
  • 開課吧:Java軟體工程師一般要學習哪些課程?
    JAVA只是一種程式語言,由這個語言衍生出來領域很多,如果您有過使用JAVA語言開發經驗,那您肯定會關心JAVA的某一方向學習的問題,但您直接關心JAVA學習要學哪些課程,那我猜您一定是零基礎,作為零基礎的,以下建議僅供參考:
  • 入門Web開發者福音 React學習少走彎路的實用貼
    學習CSS可以參考這個免費的課程(http://www.java67.com/2018/03/top-5-free-courses-to-learn-web-development.html)。JavaScript這是Web開發的第三根支柱,有了JavaScript網頁才能交互。它也是React框架的基礎,所以在學習React之前必須掌握JavaScript。
  • Java 學習路線
    ,包括從基礎、到 C++ 入門、進階、提升的視頻、書籍推薦,這些都是我大學期間真實走過的路,還沒看過的,先看下上篇文章:1、Linux C/C++ 學習路線(已拿騰訊、百度 offer)公眾號、以及朋友圈下面留言,有不少讀者希望我寫一篇 Java 的學習路線,以及我對於 Java 方向的看法。
  • ReactNative 的組件架構設計
    todo 一個問題:由於 react 是面向狀態編程,相當於 react 的組件只關注數據的最終狀態,數據是怎麼產生的並不關心,但是某些場景下,數據如何產生的是會影響到組件的一些行為的【比如一個新增行要求有動畫效果,查詢出的行就不需要等】,這在 RN 中很難描述。。。。。
  • 零基礎學習初識Java筆記
    java -version 檢測jdk版本的開發java:1.新建文本文檔2.編寫java代碼3.更改文件後綴名為 .java4.按Windows+R在當前目錄下 輸入 javac 文件名.java,這是編譯5.java 文件名,這是運行javac 是編譯命令java 是運行命令javac HelloWorld.java 會把HelloWorld.java 這個文件
  • React Hook 入門教程
    react hook 產生的原因在組件之間復用狀態邏輯很難組件之間復用狀態邏輯很困難,我們可能會把組件連結到我們的 store 裡面。此時,React 需要為共享狀態邏輯提供更好的原生途徑。Hook 使你在無需修改組件結構的情況下復用狀態邏輯。複雜的 class 組件變得難以理解React 的核心是組件。