1. 程式人生 > >React學習之擴充套件阻止資料的更新的方法

React學習之擴充套件阻止資料的更新的方法

1、使用PureRenderMixin淺比較

PureRenderMixin的出現早於React.PureComponent,該外掛屬於歷史保留,現在就使用React.PureComponent吧,這裡也就提一下

如果你的React元件的渲染函式是一個純函式也就是說對於相同的值返回一樣的結果同時不影響元素局,在某些場景下,你可以利用這個外掛來極大地提升效能。

var PureRenderMixin = require('react-addons-pure-render-mixin');
React.createClass({
  mixins: [PureRenderMixin],

  render: function
() {
return <div className={this.props.className}>foo</div>; } });
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

在底層,該外掛實現了shouldComponentUpdate,在這裡面,它比較當前的propsstate和接下來的propsstate,當兩者相等的時候返回false,不進行更新。

ES6版本

import PureRenderMixin from 'react-addons-pure-render-mixin';
class FooComponent extends React.Component {
  constructor(props) {
    super
(props); this.shouldComponentUpdate = PureRenderMixin.shouldComponentUpdate.bind(this); } render() { return <div className={this.props.className}>foo</div>; } }`
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

2、深層次的資料比較forceUpdate()/immutable objects

僅僅是淺比較物件。如果物件包含了複雜的資料結構,深層次的差異可能會產生誤判。僅用於擁有簡單propsstate的元件,或者當你知道很深的資料結構已經變化了的時候使用forceUpdate()

。或者,考慮使用immutable objects(不變資料)來幫助巢狀資料快速比較。 [shouldComponentUpdate會跳過更新整個元件子樹。確保所有的子元件也是“純粹的”]這套路不多說。

相關推薦

React學習擴充套件阻止資料更新方法

1、使用PureRenderMixin淺比較PureRenderMixin的出現早於React.PureComponent,該外掛屬於歷史保留,現在就使用React.PureComponent吧,這裡也

React學習擴充套件不變的資料(immutability-helper)優化(三十二)

                       注意  引入import update from 'react-addons-update'; // ES6var update = require('react-addons-update'); // ES5 with npmvar update = React

深度學習影象的資料增強方法彙總

參考:https://www.jianshu.com/p/99450dbdadcf 在深度學習專案中,尋找資料花費了相當多的時間。但在很多實際的專案中,我們難以找到充足的資料來完成任務。為了要保證完美地完成專案,有兩件事情需要做好:1、尋找更多的資料;2、資料增強。本篇主要描述資料增強。 有

React學習旅----迴圈資料

import React from 'react'; // 引入本地圖片,需以元件的形式引入,而遠端圖片則不需要 import logo from '../assets/images/logo.svg'; // 元件名稱,類首字母必須大寫 class News extends React.Compo

React學習擴充套件效能分析工具-Perf(二十八)

                     import Perf from 'react-addons-perf' // ES6語法var Perf = require('react-addons-perf') // ES5語法針對nodejsvar Perf = React.addons.Perf; //

React學習旅----mock模擬假資料及封裝axios,動態渲染表格

import React from 'react'; import { Card, Table, Modal, Button, message } from 'antd'; import axios from './../../axios/index' import Utils from './..

React學習旅----事件方法及改變this指向

import React, { Component } from 'react'; import '../assets/css/index.css' // react繫結屬性注意點 // class要換成className // for 要換成htmlFor // style class Home

React學習旅----實現類似vue的資料雙向繫結

react沒有資料的雙向繫結,但可以用過一些方法實現: import React from 'react'; class TodoList extends React.Component { constructor(props) { super(props) this.sta

react學習路(2.2)-----資料傳遞(props(子傳父級),context)

react學習之路,資料傳遞(props,context); 再講props子父級之前,先學習一下context這個非常NB的資料接收容器,如何正確的使用,接下來為大家介紹, 用它之前,我們必須要知道有個叫prop-types的東西,從英文我們就知道意思就是叫我們定義資料型

Python學習路-list的常用方法

mov color copy dex span pen int 切片 python學習 增 append() insert(index,obj) #可以向指定位置添加 1 __author__ = "KuanKuan" 2 list = [] 3 list.append

Python學習路-字典dict常用方法

round 存在 set get 輸出 查詢 val 沒有 span 字典特性: dict無序 key唯一,天生去重 創建字典: way1:小心列表坑 1 __author__ = "KuanKuan" 2 d = dict.fromkeys([1, 2, 3

Python學習==>常用字符串方法

name aaa 字母 返回 isl HA find 指定 index # 常用字符串方法 a = ‘\n 字 符 串 \n\n‘c = a.strip() #默認去掉字符串兩邊的空格和換行符c = a.lstrip() #默認去掉字符串左邊的空格和換行符c =

React學習旅----專案小例項----無人點餐二---詳情頁渲染

App.js /* react路由的配置: 1、找到官方文件 https://reacttraining.com/react-router/web/example/basic 2、安裝 cnpm install react-router-dom --save 3、找

深度學習批量圖片資料增強

在之前的文章中,分別對資料增強的方法以及庫函式進行了介紹,本文將結合實際應用進行批量圖片的資料增強。 背景:專案採集的是灰度圖,原資料只有不到20張圖片,因此,選擇資料增強的方法,通過不同變換方法的組合,實現資料增加的百張以上,這樣才可以放入深度學習模型進行訓練(利用遷移學習)。 話不多

React學習旅----Redux安裝及富文字、echarts

瀏覽器中安裝redux devtools擴充套件 yarn add redux  react-redux redux-devtools-extension 安裝依賴包即可 // 引入createStore建立store,引入applyMiddleware 來使用中介軟體 //

React學習旅----配置多頁面路由及巢狀路由demo

const menuList = [ { title: '首頁', // key: '/home' key: '/admin/home' }, { title: 'UI', key: '/ui', children: [ {

React學習旅----按需載入Antd UI元件及自定義主題

package.json "babel": { "presets": [ "react-app" ], "plugins": [ [ "import", { "libraryName": "a

React學習旅----配置less-loader

yarn less-loader先安裝依賴 yarn eject結構目錄 開啟config目錄下的webpack.config.dev.js,修改webpack配置 找到css部分,拷貝一份,複製貼上,改為less即可 新增 const lessRegex = /\.less$/

React學習旅----yarn eject報錯“This git repository has untracked files or uncommitted changes:”解決辦法

當我們yarn eject解開專案結構時,報錯This git repository has untracked files or uncommitted changes: 這是提示我們沒有進行git提交 我們開啟我們的github,新建專案,拉下程式碼後,將我們之前開發的檔案放進來,重新安

深度學習影象的資料增強

本文轉載自:http://www.cnblogs.com/gongxijun/p/6117588.html 在影象的深度學習中,為了豐富影象訓練集,更好的提取影象特徵,泛化模型(防止模型過擬合),一般都會對資料影象進行資料增強,資料增強,常用的方式,就是:旋轉影象,剪下影象,改變影象色差,扭