原创 JS精度丟失導致的問題及解決

遇到的問題: 項目中出現了 17652.19 + 7673.78 - 25325.97 = -3.64 的問題,最後發現是JS精度丟失的問題,那麼就先來看看這個結果是怎麼產生的。 產生原因: JavaScript 中所有數字包括整

原创 React Hooks 再學習,應用到項目中

期望在新代碼中使用hooks 函數 + hooks = 有‘生命週期’的組件 與class的區別: Hook 提供了強大而富有表現力的方式來在組件間複用功能,自定義hook const [originData, setState

原创 React項目 加入 TS

1、全局安裝ts npm i -g typescript 2、創建tsconfig.json tsc --init 修改tsconfig.json,開啓jsx和allowJs配置, 3、安裝開發環境依賴 npm install -

原创 JavaScript基礎複習(十一) 異步編程

總是糾結js是異步還是同步? 對於JS 異步還是同步這個問題,不需要糾結太多,在執行DOM渲染時,確實是同步執行的,也是爲了安全起見,一步一步執行,如果上一步未完成,下一步是不會運行的。 但本質還是單線程 但是對於 網絡請求 這樣

原创 JavaScript基礎複習(十) JS事件機制

事件 用戶交互行爲,用戶或瀏覽器自身執行的某種動作 事件流 頁面接收事件的順序,事件觸發的順序, 分爲 事件冒泡(子級先觸發,冒泡到父級)和事件捕獲(父級先觸發,再到達子級) 先捕獲->處於目標階段 -> 再冒泡 事件冒泡:事件

原创 React項目 頁面切換,保留表單篩選項

Q: 人員列表頁面切換保留篩選項 ans: /** * 表單組件在掛載時,將組件的 fields 值賦給對應的交互組件 */ componentDidMount() { const { fields, pageInde

原创 Antd 組件 Menu.Item中關於 disabled 的一點使用心得

有一個需求是下拉菜單中有操作,但有些操作是有前提條件的,比如 批量啓用 就需要在選擇了數據之後。所以設置disabled來控制它操作還是不可操作。 但是會出現一個問題,在<Menu.Item></Menu.Item>中的 不是

原创 使用vue+webpack構建項目(三) Vuex中的 mutation和action

知識點複習 使用vue+webpack構建項目(二) 引入vuex vue-resource vue-router 更改 Vuex 的 store 中的狀態的唯一方法是提交 mutation // 區別 mutation 必須同

原创 react+antd 動態增刪表單 再解決

最近開發的一個功能,和之前寫過的很像,但畢竟我也快兩年經驗了,當然不能再使用原來實現的方法,於是,又搞起來。 功能: 需要對多個Input組成的list可以新增和刪除 在之前的文章 react 涉及的增加,刪除list ,我說不

原创 近期遇到的數組對象處理

一個數組對象,根據另一個數組的ids來過濾數據。 arrF.filter(i => arrZ.includes(i.id)) 判斷一個數組是否是另一個數組的 子集 arrF.every(i => arrZ.includes

原创 JavaScript基礎複習(六) 對象,原型(鏈),繼承

最近在複習基礎知識,這次整理的內容是JS對象,原型,原型鏈,繼承~ 本次知識的複習是基於《JavaScript高級程序設計》加上自己的理解,如果有什麼問題,望不吝賜教。 對象 什麼是對象: 無序屬性的集合,其屬性可以包含基本值,對

原创 JavaScript基礎複習(七) Ajax&跨域

Ajax 原理 通過 XMLHttpRequest對象來向服務器發送異步請求,從服務器獲得數據,然後用JS操作DOM,從而更新頁面。 編寫步驟 創建AJAX對象 XMLHttpRequest 打開一個連接 open(“GE

原创 JavaScript基礎複習(九) 常見JS算法

排序算法 Algorithm Average Best Worst extra space stable 冒泡排序 O(N^2) O(N) O(N^2) O(1) 穩定 直接插入排序 O(N^2) O(N) O(

原创 JavaScript基礎複習(五) 作用域(鏈),閉包,this,執行上下文

作用域 作用域: 變量與函數的可訪問範圍量 分爲 全局作用域: 在代碼中任何地方都能訪問到的對象擁有全局作用域 局部作用域: 一般只在固定的代碼片段內可訪問到。最常見的是在函數體內定義的變量,只能在函數體內使用。 在函數體內,

原创 JavaScript基礎複習(四) 函數詳解

創建函數的方式 函數聲明和函數表達式 // 函數表達式 匿名函數 賦值給這個變量 var foo1 = function(...){} // 函數表達式 命名 var foo2 = function acc(...){}