国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

目錄
在WordPress區(qū)塊中使用外部API
保存設(shè)置屬性
在區(qū)塊設(shè)置UI中顯示值
首頁 web前端 css教學(xué) 在塊編輯器中保存自定義WordPress塊的設(shè)置

在塊編輯器中保存自定義WordPress塊的設(shè)置

Mar 09, 2025 pm 01:05 PM

Saving Settings for a Custom WordPress Block in the Block Editor

本系列教程已經(jīng)完成了許多工作!我們創(chuàng)建了一個自定義WordPress區(qū)塊,它從外部API獲取數(shù)據(jù)並在前端渲染。然後,我們擴(kuò)展了這項工作,使數(shù)據(jù)也能直接在WordPress區(qū)塊編輯器中渲染。之後,我們使用WordPress InspectorControls包中的組件創(chuàng)建了該區(qū)塊的設(shè)置UI。

最後一步是保存設(shè)置選項。如果我們回憶上一篇文章的內(nèi)容,我們實際上能夠“保存”我們在區(qū)塊設(shè)置UI中的選擇,但是這些選擇實際上並沒有存儲在任何地方。如果我們進(jìn)行一些選擇,保存它們,然後返回到帖子,設(shè)置將完全重置。

讓我們閉環(huán)並保存這些設(shè)置,以便在下一次編輯包含我們自定義區(qū)塊的帖子時,它們能夠持久保存!

在WordPress區(qū)塊中使用外部API

  • 前端渲染數(shù)據(jù)
  • 後端渲染數(shù)據(jù)
  • 創(chuàng)建自定義設(shè)置UI
  • 保存自定義區(qū)塊設(shè)置 (此處!)
  • 使用實時API數(shù)據(jù) (即將推出)

保存設(shè)置屬性

我們正在使用一個提供足球隊排名的API,我們用它來獲取基於國家、聯(lián)賽和賽季的排名顯示。我們可以為每個屬性創(chuàng)建新的屬性,如下所示:

// index.js

attributes: {
  data: {
    type: "object",
  },
  settings: {
    type: "object",
    default: {
      country: {
        type: "string",
      },
      league: {
        type: "string",
      },
      season: {
        type: "string",
      },
    },
  },
},

接下來,我們需要從LeagueSettings.js設(shè)置屬性。每當(dāng)我們的設(shè)置UI中的ComboboxControl更新時,我們需要使用setAttributes()方法設(shè)置屬性。當(dāng)我們只使用一個數(shù)據(jù)端點(diǎn)時,這更直接。但是現(xiàn)在我們有多個輸入,它就稍微複雜一些。

這就是我將如何組織它。我將在LeagueSettings.js中創(chuàng)建一個新的對象,它遵循設(shè)置屬性及其值的結(jié)構(gòu)。

// LeagueSettings.js

let localSettings = {
  country: attributes.settings.country,
  league: attributes.settings.league,
  season: attributes.settings.season,
};

我還將初始狀態(tài)變量從null更改為相應(yīng)的設(shè)置變量。

// LeagueSettings.js

const [country, setCountry] = useState(attributes.settings.country);
const [league, setLeague] = useState(attributes.settings.league);
const [season, setSeason] = useState(attributes.settings.season);

在每個handle______Change()中,我將創(chuàng)建一個setLocalAttributes(),它帶有一個參數(shù),該參數(shù)使用擴(kuò)展運(yùn)算符克隆並用新的國家、聯(lián)賽和賽季值覆蓋之前的localSettings對象。

// LeagueSettings.js

function handleCountryChange(value) {
  // 初始代碼
  setLocalAttributes({ ...localSettings, country: value });
  // 代碼的其余部分
}

function handleLeagueChange(value) {
  // 初始代碼
  setLocalAttributes({ ...localSettings, league: value });
  // 代碼的其余部分
}

function handleSeasonChange(value) {
  // 初始代碼
  setLocalAttributes({ ...localSettings, season: value });
  // 代碼的其余部分
}

我們可以這樣定義setLocalAttributes()

// LeagueSettings.js

function setLocalAttributes(value) {
  let newSettings = Object.assign(localSettings, value);
  localSettings = { ...newSettings };
  setAttributes({ settings: localSettings });
}

因此,我們使用Object.assign()來合併這兩個對象。然後我們可以將newSettings對象克隆回localSettings,因為我們還需要在每次進(jìn)行新的選擇並發(fā)生更改時考慮每個設(shè)置屬性。

最後,我們可以像平時一樣使用setAttributes()來設(shè)置最終對象。您可以通過更新UI中的選擇來確認(rèn)上述屬性是否正在更改。

另一個確認(rèn)方法是在DevTools中執(zhí)行console.log()來查找屬性。

仔細(xì)看看那個截圖。這些值存儲在attributes.settings中。由於useState()鉤子,每次我們在設(shè)置中進(jìn)行更改時,React都會重新渲染,因此我們能夠看到它實時發(fā)生。

在區(qū)塊設(shè)置UI中顯示值

將設(shè)置值存儲在控件選項本身中並不是很有用,因為每個控件都依賴於其他設(shè)置值(例如,按聯(lián)賽的排名取決於選擇的賽季)。但在設(shè)置值是靜態(tài)的並且設(shè)置彼此獨(dú)立的情況下,它非常有用。

在不使當(dāng)前設(shè)置複雜化的前提下,我們可以在設(shè)置面板內(nèi)創(chuàng)建另一個部分來顯示當(dāng)前屬性。您可以選擇自己的方式來顯示設(shè)置值,但我將從@wordpress/components包中導(dǎo)入一個Tip組件:

// index.js

attributes: {
  data: {
    type: "object",
  },
  settings: {
    type: "object",
    default: {
      country: {
        type: "string",
      },
      league: {
        type: "string",
      },
      season: {
        type: "string",
      },
    },
  },
},

在這裡,我將對值進(jìn)行條件檢查,然後再在Tip組件中顯示它們:

// LeagueSettings.js

let localSettings = {
  country: attributes.settings.country,
  league: attributes.settings.league,
  season: attributes.settings.season,
};

這就是它在區(qū)塊編輯器中的工作方式:

當(dāng)可以顯示實時數(shù)據(jù)而無需每次都手動更新它們時,API數(shù)據(jù)更強(qiáng)大。我們將在本系列的下一部分中探討這一點(diǎn)。

以上是在塊編輯器中保存自定義WordPress塊的設(shè)置的詳細(xì)內(nèi)容。更多資訊請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強(qiáng)大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

什麼是'渲染障礙CSS”? 什麼是'渲染障礙CSS”? Jun 24, 2025 am 12:42 AM

CSS會阻塞頁面渲染是因為瀏覽器默認(rèn)將內(nèi)聯(lián)和外部CSS視為關(guān)鍵資源,尤其是使用引入的樣式表、頭部大量內(nèi)聯(lián)CSS以及未優(yōu)化的媒體查詢樣式。 1.提取關(guān)鍵CSS並內(nèi)嵌至HTML;2.延遲加載非關(guān)鍵CSS通過JavaScript;3.使用media屬性優(yōu)化加載如打印樣式;4.壓縮合併CSS減少請求。建議使用工具提取關(guān)鍵CSS,結(jié)合rel="preload"異步加載,合理使用media延遲加載,避免過度拆分與復(fù)雜腳本控制。

外部與內(nèi)部CSS:最好的方法是什麼? 外部與內(nèi)部CSS:最好的方法是什麼? Jun 20, 2025 am 12:45 AM

thebestapphachforcssdepprodsontheproject'sspefificneeds.forlargerprojects,externalcsSissBetterDuoSmaintoMaintainability andReusability; forsMallerProjectsorsingle-pageApplications,InternaltCsmightBemoresobleable.InternalCsmightBemorese.it.it'sclucialtobalancepopryseceneceenceprodrenceprodrenceNeed

我的CSS必須在較低的情況下嗎? 我的CSS必須在較低的情況下嗎? Jun 19, 2025 am 12:29 AM

否,CSSDOESNOTHAVETOBEINLOWERCASE.CHOMENDENS,使用flowercaseisrecommondendendending:1)一致性和可讀性,2)避免使用促進(jìn)性技術(shù),3)潛在的Performent FormanceBenefits,以及4)RightCollaboraboraboraboraboraboraboraboraboraboraboraboraboraboraboraboraborationWithInteams。

CSS案例靈敏度:了解重要的 CSS案例靈敏度:了解重要的 Jun 20, 2025 am 12:09 AM

cssismostlycaseminemintiment,buturlsandfontfamilynamesarecase敏感。 1)屬性和valueslikeColor:紅色; prenotcase-sensive.2)urlsmustmustmatchtheserver'server'scase,例如

什麼是AutoPrefixer,它如何工作? 什麼是AutoPrefixer,它如何工作? Jul 02, 2025 am 01:15 AM

Autoprefixer是一個根據(jù)目標(biāo)瀏覽器範(fàn)圍自動為CSS屬性添加廠商前綴的工具。 1.它解決了手動維護(hù)前綴易出錯的問題;2.通過PostCSS插件形式工作,解析CSS、分析需加前綴的屬性、依配置生成代碼;3.使用步驟包括安裝插件、設(shè)置browserslist、在構(gòu)建流程中啟用;4.注意事項有不手動加前綴、保持配置更新、非所有屬性都加前綴、建議配合預(yù)處理器使用。

什麼是CSS計數(shù)器? 什麼是CSS計數(shù)器? Jun 19, 2025 am 12:34 AM

csscounterscanautomationallymentermentermentections和lists.1)usecounter-ensettoInitializize,反插入式發(fā)芽,andcounter()orcounters()

CSS:何時重要(何時不)? CSS:何時重要(何時不)? Jun 19, 2025 am 12:27 AM

在CSS中,選擇器和屬性名不區(qū)分大小寫,而值、命名顏色、URL和自定義屬性則區(qū)分大小寫。 1.選擇器和屬性名不區(qū)分大小寫,例如background-color和Background-Color相同。 2.值中的十六進(jìn)制顏色不區(qū)分大小寫,但命名顏色區(qū)分大小寫,如red有效而Red無效。 3.URL區(qū)分大小寫,可能導(dǎo)致文件加載問題。 4.自定義屬性(變量)區(qū)分大小寫,使用時需注意大小寫一致。

什麼是圓錐級函數(shù)? 什麼是圓錐級函數(shù)? Jul 01, 2025 am 01:16 AM

theconic-Gradient()functionIncsscreatesCircularGradientsThatRotateColorStopSaroundAcentralPoint.1.IsidealForPieCharts,ProgressIndicators,colordichers,colorwheels和decorativeBackgrounds.2.itworksbysbysbysbydefindefingincolordefingincolorstopsatspecificains off.

See all articles