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

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

在塊編輯器中保存自定義WordPress塊的設置

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ù)并在前端渲染。然后,我們擴展了這項工作,使數(shù)據(jù)也能直接在WordPress區(qū)塊編輯器中渲染。之后,我們使用WordPress InspectorControls包中的組件創(chuàng)建了該區(qū)塊的設置UI。

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

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

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

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

保存設置屬性

我們正在使用一個提供足球隊排名的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設置屬性。每當我們的設置UI中的ComboboxControl更新時,我們需要使用setAttributes()方法設置屬性。當我們只使用一個數(shù)據(jù)端點時,這更直接。但是現(xiàn)在我們有多個輸入,它就稍微復雜一些。

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

// LeagueSettings.js

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

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

// 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ù)使用擴展運算符克隆并用新的國家、聯(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,因為我們還需要在每次進行新的選擇并發(fā)生更改時考慮每個設置屬性。

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

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

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

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

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

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

// index.js

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

在這里,我將對值進行條件檢查,然后再在Tip組件中顯示它們:

// LeagueSettings.js

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

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

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

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

本站聲明
本文內(nèi)容由網(wǎng)友自發(fā)貢獻,版權(quán)歸原作者所有,本站不承擔相應法律責任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請聯(lián)系admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣服圖片

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

用于從照片中去除衣服的在線人工智能工具。

Clothoff.io

Clothoff.io

AI脫衣機

Video Face Swap

Video Face Swap

使用我們完全免費的人工智能換臉工具輕松在任何視頻中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的代碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

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

外部與內(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)避免使用促進性技術,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ù)目標瀏覽器范圍自動為CSS屬性添加廠商前綴的工具。1.它解決了手動維護前綴易出錯的問題;2.通過PostCSS插件形式工作,解析CSS、分析需加前綴的屬性、依配置生成代碼;3.使用步驟包括安裝插件、設置browserslist、在構(gòu)建流程中啟用;4.注意事項有不手動加前綴、保持配置更新、非所有屬性都加前綴、建議配合預處理器使用。

什么是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.值中的十六進制顏色不區(qū)分大小寫,但命名顏色區(qū)分大小寫,如red有效而Red無效。3.URL區(qū)分大小寫,可能導致文件加載問題。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