文實例講述了VUE直接通過JS修改html對象的值導(dǎo)致沒有更新到數(shù)據(jù)中解決方法。分享給大家供大家參考,具體如下:
業(yè)務(wù)場景
我們在使用vue編寫代碼時,我們有一個多行文本框控件,希望在頁面點擊一個按鈕在文本框焦點位置插入一個{pk}的數(shù)據(jù)。
發(fā)現(xiàn)插入這個數(shù)據(jù)后,這個數(shù)據(jù)并沒有同步到數(shù)據(jù)中,但是直接通過鍵盤輸入,就可以改變數(shù)據(jù)。
原因分析
在通過JS修改控件的value數(shù)據(jù)后,并沒有觸發(fā)到數(shù)據(jù)更新。
解決辦法
當(dāng)文本框獲取焦點時,我們發(fā)布一個myfocus控件,我們在使用這個控件的時候。
編寫一個getTextarea的方法。
這里將文本框控件,拋出來,我們可以通過js代碼修改這個控件的value。
通過這個代碼我們往焦點處插入我們的代碼。
當(dāng)文本框失去焦點時,將當(dāng)前控件的值作為input事件進行發(fā)布,從而實現(xiàn)了數(shù)據(jù)的同步。
希望本文所述對大家vue.js程序設(shè)計有所幫助。
JSS是CSS的創(chuàng)作工具,它允許你使用JavaScript以聲明,無沖突和可重用的方式描述樣式。它可以在瀏覽器,服務(wù)器端或在構(gòu)建時在Node中編譯。JSS與框架無關(guān)。它由多個包組成:核心部分,插件以及框架集成等。
https://github.com/cssinjs/jss stars:5.1k
如果你已經(jīng)對使用JSS感興趣,可以使用在線代碼編輯器。在CodeSandbox(一個非常實用的在線編輯器,可以用來學(xué)習(xí)各種編程技能)上嘗試Hello World示例。以下是三種不同框架下的用法(代碼圖片生成自carbon網(wǎng)站):
JSS生成實際的CSS,而不是內(nèi)聯(lián)樣式。它支持每個現(xiàn)有的CSS功能。CSS規(guī)則只創(chuàng)建一次,并使用其類名與元素重復(fù)使用,與內(nèi)聯(lián)樣式相反。此外,當(dāng)DOM元素更新時,將應(yīng)用先前創(chuàng)建的CSS規(guī)則。
JSS默認(rèn)生成唯一的類名。它允許避免典型的CSS問題,默認(rèn)情況下一切都是全局的。它完全消除了命名約定的需要。
使用JavaScript作為宿主語言使我們有機會以常規(guī)CSS無法實現(xiàn)的方式重用CSS規(guī)則。您可以利用JavaScript模塊,變量,函數(shù),數(shù)學(xué)運算等。如果做得好,它仍然可以完全聲明。
CSS規(guī)則的明確使用允許您跟蹤消費者并確定是否可以安全地刪除或修改它。
使用JavaScript函數(shù)和Observable可以在瀏覽器中動態(tài)生成樣式,使有機會訪問應(yīng)用程序狀態(tài),瀏覽器API或遠(yuǎn)程數(shù)據(jù)以進行樣式設(shè)置。你不僅可以定義一次樣式,還可以在任何時間點以有效的方式更新樣式。
JSS可以高效地處理CSS更新,可以使用它創(chuàng)建復(fù)雜的動畫。使用函數(shù)值,Observables并將它們與CSS過渡相結(jié)合,可以為用戶控制的動畫提供最大的性能。對于預(yù)定義的動畫,使用@keyframes和transition更好,因為它們將完全取消阻止JavaScript線程。
要優(yōu)化第一次繪制的時間,你可以使用服務(wù)器端渲染并提取關(guān)鍵CSS??梢詫SS的呈現(xiàn)與HTML的呈現(xiàn)結(jié)合起來,這樣就不會生成未使用的CSS。它將導(dǎo)致在服務(wù)器端呈現(xiàn)期間提取的最小關(guān)鍵CSS,并允許內(nèi)聯(lián)它。
JSS核心實現(xiàn)了基于插件的架構(gòu)。它允許您創(chuàng)建可以實現(xiàn)自定義語法或其他強大功能的自定義插件。JSS有許多官方插件,可以單獨安裝或使用默認(rèn)預(yù)設(shè)。社區(qū)插件的一個很好的例子是jss-rtl。
由于各種插件,JSS允許您使用現(xiàn)有的全局類名來嵌套,全局選擇器和組合。例如,允許您以比CSS更可讀的方式表達屬性。如果要直接從瀏覽器開發(fā)工具復(fù)制粘貼樣式,也可以使用模板字符串。jss-plugin-expandbox-shadow
另一個有用的插件示例是,它允許您完全隔離元素與全局級聯(lián)規(guī)則,并可能覆蓋不需要的屬性。在創(chuàng)建應(yīng)該在第三方文檔內(nèi)部呈現(xiàn)的窗口小部件時尤其有用。jss-plugin-isolate
React-JSS包提供了一些額外的功能:
CSS不需要額外的構(gòu)建管道配置。無論你選擇構(gòu)建JavaScript的工具是什么,它都可以與JSS一起使用。
yarn add jss
yarn add jss-preset-default //使用默認(rèn)設(shè)置
import jss from 'jss' import preset from 'jss-preset-default' jss.setup(preset()) // 創(chuàng)造你的style. const style = { myButton: { color: 'green' } } //編譯樣式,應(yīng)用插件。 const sheet = jss.createStyleSheet(style) //如果要在客戶端上呈現(xiàn),請將其插入DOM。 sheet.attach() //如果要渲染服務(wù)器端,請獲取CSS文本。 sheet.toString()
import jss from 'jss' import camelCase from 'jss-plugin-camel-case' import somePlugin from 'jss-some-plugin' //使用插件。 jss.use(camelCase(), somePlugin()) // Create your style. const style = { myButton: { color: 'green' } } //編譯樣式,應(yīng)用插件。 const sheet = jss.createStyleSheet(style) // 如果要在客戶端上呈現(xiàn),請將其插入DOM sheet.attach() // 如果要渲染服務(wù)器端,請獲取CSS文本。 sheet.toString()
<head> <title>JSS</title> <!-- 自定義插入點 --> </head>
import jss from 'jss' jss.setup({insertionPoint: 'custom-insertion-point'})
<head> <title>JSS in body</title> </head> <body> <div id="insertion-point"> 這可能是你選擇的任何DOM節(jié)點,可以作為插入點。 </div> </body
import jss from 'jss' jss.setup({ insertionPoint: document.getElementById('insertion-point') })
通過兩張圖片來體驗:
JSS的功能是十分強大的,不僅僅讓寫css的方式放到了JavaScript,這樣對更加喜愛編寫javascript的小伙伴來說是值得嘗試的,而且還支持服務(wù)器端渲染等更多高級的特性,前端技術(shù)百花齊放,但目前仍然不變的是掌握J(rèn)avaScript者得天下的時代!
ue 3 是一個漸進式增強型 JavaScript 框架,用于構(gòu)建用戶界面。它提供了許多新功能和特性,旨在提高性能、降低復(fù)雜性和改進開發(fā)人員體驗。
主要更新
Composition API
Composition API 是一種新的響應(yīng)式數(shù)據(jù)管理方式,它提供了更大的靈活性 and 代碼的可重用性。它使用 setup 函數(shù)來定義組件的邏輯,并可以使用 reactive、ref 和 computed 等 API 來創(chuàng)建響應(yīng)式數(shù)據(jù) and 計算屬性。
Composition API 的優(yōu)點:
更靈活:可以使用更函數(shù)式的方式來編寫組件邏輯。
代碼可重用性更高:可以更容易地創(chuàng)建可重用的組件邏輯。
更易于測試:更容易地測試組件邏輯。
Reactivity System
Vue 3 使用了一個新的響應(yīng)式系統(tǒng),它更加高效 and 可擴展。它使用 Proxy API 來跟蹤數(shù)據(jù)的變化,并使用高效的算法來更新視圖。
Reactivity System 的優(yōu)點:
更高效:比 Vue 2 的響應(yīng)式系統(tǒng)更加高效。
更可擴展:可以支持更加復(fù)雜的數(shù)據(jù)結(jié)構(gòu)。
更易于理解:更容易理解響應(yīng)式系統(tǒng)的運作機制。
TypeScript 支持
Vue 3 對 TypeScript 提供了更好的支持,使代碼更加類型安全 and 易于維護。可以使用 TypeScript 類型來定義組件的 props、data 和 methods,并可以使用 TypeScript 編譯器來檢查代碼的類型錯誤。
TypeScript 支持的優(yōu)點:
代碼更加類型安全:可以防止類型錯誤,提高代碼的可靠性。
代碼更易于維護:更容易理解代碼的邏輯。
開發(fā)效率更高:可以使用 TypeScript 的一些特性來提高開發(fā)效率。
其他更新
Tree Shaking: Vue 3 使用 Tree Shaking 技術(shù)來減少最終代碼包的大小。Tree Shaking 會自動刪除未使用的代碼,從而減小代碼包的大小。
Virtual DOM: Vue 3 優(yōu)化了 Virtual DOM 算法,提高了渲染性能。Virtual DOM 是 Vue 用于更新視圖的一種技術(shù)。
全局 API: Vue 3 提供了一些全局 API,例如 reactive、computed 和 watchEffect,用于創(chuàng)建響應(yīng)式數(shù)據(jù) and 計算屬性。
其他知識點
ref: ref 用來創(chuàng)建響應(yīng)式引用,可以引用 DOM 元素或其他值。
watch: watch 用來監(jiān)視響應(yīng)式數(shù)據(jù)的變化,并執(zhí)行相應(yīng)的回調(diào)函數(shù)。
provide/inject: provide/inject 用來在組件之間共享數(shù)據(jù),而無需使用 props 或 events。
路由
*請認(rèn)真填寫需求信息,我們會在24小時內(nèi)與您取得聯(lián)系。