React面试八股文(第一期)

react有什么特点

  • react使用过的虚拟DOM,而不是真实DOM

  • react可以用服务器渲染

  • react遵循单向数据流 或者数据绑定

React 数据持久化有什么实践吗?

封装数据持久化组件:

let storage={
   
    // 增加
    set(key, value){
   
        localStorage.setItem(key, JSON.stringify(value));
    },
    // 获取
    get(key){
   
        return JSON.parse(localStorage.getItem(key));
    },
    // 删除
    remove(key){
   
        localStorage.removeItem(key);
    }
};
export default Storage;

在React项目中,通过redux存储全局数据时,会有一个问题,如果用户刷新了网页,那么通过redux存储的全局数据就会被全部清空,比如登录信息等。这时就会有全局数据持久化存储的需求。首先想到的就是localStorage,localStorage是没有时间限制的数据存储,可以通过它来实现数据的持久化存储。

但是在已经使用redux来管理和存储全局数据的基础上,再去使用localStorage来读写数据,这样不仅是工作量巨大,还容易出错。那么有没有结合redux来达到持久数据存储功能的框架呢?当然,它就是redux-persist。redux-persist会将redux的store中的数据缓存到浏览器的localStorage中。其使用步骤如下:

(1)首先要安装redux-persist:

npm i redux-persist

(2)对于reducer和action的处理不变,只需修改store的生成代码,修改如下:

import {
   createStore} from 'redux'
import reducers from '../reducers/index'
import {
   persistStore, persistReducer} from 'redux-persist';
import storage from 'redux-persist/lib/storage';
import autoMergeLevel2 from 'redux-persist/lib/stateReconciler/autoMergeLevel2';
const persistConfig = {
   
    key: 'root',
    storage: storage,
    stateReconciler: autoMergeLevel2 // 查看 'Merge Process' 部分的具体情况
};
const myPersistReducer = persistReducer(persistConfig, reducers)
const store = createStore(myPersistReducer)
export const persistor = persistStore(store)
export default store

(3)在index.js中,将PersistGate标签作为网页内容的父标签:

import React from 'react';
import ReactDOM from 'react-dom';
import {
   Provider} from 'react-redux'
import store from './redux/store/store'
import {
   persistor} from './redux/store/store'
import {
   PersistGate} from 'redux-persist/lib/integration/react';
ReactDOM.render(<Provider store={
   store}>
            <PersistGate loading=

你可能感兴趣的:(reactjs)