@harrasteblogi Juuri Nyt! 12.4.2026
14:46 Yleisimmät virheet WooCommerce-kaupoissa Lue lisää →
10:34 Kuinka rakentaa toimiva verkkokauppa WordPressillä Lue lisää →
06:53 Näin automatisoit WordPress-sivuston rutiinitehtävät Lue lisää →
06:34 Parhaat työkalut WordPress-sivuston ylläpitoon Lue lisää →
06:22 Kuinka hallita useita WordPress-sivustoja tehokkaasti Lue lisää →
Tilaa uutiskirje

Tilaa uutiskirje

  • Facebook
  • X
  • Instagram
  • RSS
harrasteblogi@gmail.com
  • @harrasteblogi
  • Blogi
    • Blogi
    • Live Grid
    • Bloggaaja
    • Kalenteri
  • Uutiset
    • Uutiset
    • Sää
  • Työkalut
    • Haku
    • Verkkotunnukset
    • Verkkotunnushaku
    • TraceMe
    • DNS
    • SSL-tarkistin
    • MX-tarkistin
    • Core Web Vitals -pikatesti
    • Sivuston toimivuusvalvonta
    • Salasana Generaattori
    • Tilaa uutiskirje
  • Viihde & Media
    • Ilmaiskokeilut
    • Nettiradiot
    • Suomen kaupungit
    • Spotify-listat
    • Galleria
    • Videoita
  • Info
  • Linkinvaihto
  • Ota yhteyttä
@harrasteblogi

WordPress Block Editor internals: Data Store ja state

17.1.2026 | Artikkeleita, IT, Kotisivut, Nettisivut, Verkkokauppa, Verkkokehitys, Verkkosivut, Verkkotyökalu, WordPress

google
Facebook X WhatsApp

WordPress Block Editor kokonaisuutena

WordPress Block Editor internals: Data Store ja stateWordPressin Block Editor, eli Gutenberg, ei ole vain uusi tapa kirjoittaa sisältöä. Se on kokonainen sovellusalusta WordPressin sisällä. Sen ytimessä on ajatus siitä, että editori on tilaohjattu järjestelmä, jossa kaikki mitä näet ruudulla on seurausta datasta ja sen tilasta. Tätä varten Gutenberg nojaa vahvasti Data Store -arkkitehtuuriin ja keskitettyyn state-hallintaan.

Tiivistelmä ✕
WordPress Block Editor kokonaisuutena

WordPressin Block Editor, eli Gutenberg, ei ole vain uusi tapa kirjoittaa sisältöä. Se on kokonainen sovellusalusta WordPressin sisällä. Sen ytimessä on ajatus siitä, että editori...

Mikä Data Store on Gutenbergissä

Gutenbergin Data Store on keskitetty tila-arkkitehtuuri, joka pohjautuu wp.data-kirjastoon. Ajatus on yksinkertainen mutta voimakas: sovelluksessa on yksi ensisijainen totuuden lähde, josta kaikki komponentit lukevat tilansa...

State Gutenbergissä

State tarkoittaa kaikkea sitä dataa, joka kuvaa editorin nykytilaa. Tämä ei ole vain sisältöä, vaan myös käyttöliittymän tila. Esimerkkejä:...

Core Data Storet

Tämä on ehkä tärkein yksittäinen store Gutenbergissä. Se sisältää kaiken lohkoihin liittyvän tilan: lohkopuun, valinnat, fokuksen, lohkojen ominaisuudet ja niiden järjestyksen....

Actions: miten state muuttuu

Actions ovat tapahtumia, jotka kuvaavat mitä halutaan tapahtuvan, eivät miten se tapahtuu. Esimerkiksi “insertBlock” ei kerro, miten lohko lisätään lohkopuuhun, vaan että lohko halutaan lisätä....

Selectors: miten dataa luetaan

Selectors eivät vain hae dataa suoraan statesta. Ne voivat myös muodostaa johdettua dataa. Esimerkiksi “getSelectedBlock” ei ole suoraan tallennettu tieto, vaan tulos usean tilakentän yhdistelmästä....

Subscription-malli ja reaktiivisuus

Gutenbergin React-komponentit eivät kysy dataa suoraan. Ne tilaavat tietoa storesta. Kun kyseinen data muuttuu, komponentti renderöityy uudelleen....

Omien Data Storejen luominen

Oma Data Store on perusteltu silloin, kun laajennus hallitsee omaa monimutkaista tilaansa, joka ei kuulu core-storeihin. Esimerkiksi monivaiheinen editorityökalu tai laaja lisäosan hallintanäkymä hyötyy omasta...

Yleisimmät virheet staten käsittelyssä

Kaikkea ei tarvitse laittaa Data Storeen. Jos tieto ei vaikuta muihin komponentteihin tai editorin logiikkaan, paikallinen state on usein parempi. Ylisuuri store tekee järjestelmästä raskaan...

Data Store osana WordPressin tulevaisuutta

Block Editor ei ole vain editori. Se on malli sille, miten WordPressin hallintakäyttöliittymät tulevaisuudessa rakennetaan. Data Store ja keskitetty state-hallinta mahdollistavat laajennettavan, testattavan ja ennustettavan...

Lopuksi: Gutenberg on tila, ei näkymä

Kun Block Editor tuntuu monimutkaiselta, syy ei ole Reactissa tai JavaScriptissä sinänsä. Syy on siinä, että editori on tilaohjattu sovellus, ei perinteinen lomake. Data Store...

Näytä tiivistelmä

Kun Block Editor tuntuu “älykkäältä”, reagoivalta ja ennustettavalta, syy ei ole yksittäinen React-komponentti, vaan tapa jolla data kulkee järjestelmän läpi. Ymmärtämällä Data Storen ja staten toiminnan ymmärtää samalla, miksi Gutenberg toimii niin kuin se toimii – ja miksi väärin käytettynä se voi tuntua raskaalta tai vaikealta laajentaa.

Mikä Data Store on Gutenbergissä

Keskitetty totuuden lähde

Gutenbergin Data Store on keskitetty tila-arkkitehtuuri, joka pohjautuu wp.data-kirjastoon. Ajatus on yksinkertainen mutta voimakas: sovelluksessa on yksi ensisijainen totuuden lähde, josta kaikki komponentit lukevat tilansa ja johon kaikki muutokset kirjoitetaan.

Komponentit eivät säilytä editorin ydintilaa itse. Ne kysyvät sen datastorelta. Tämä poistaa ristiriitaiset tilat, vähentää synkronointiongelmia ja tekee editorin käyttäytymisestä ennustettavaa.

Redux-henkinen, mutta WordPress-mallinen

Vaikka wp.data muistuttaa monin tavoin Reduxia, se ei ole suora kopio. WordPress on tehnyt tietoisia kompromisseja, jotta järjestelmä olisi helpompi omaksua ja laajentaa. Terminologia on tuttua: actions, selectors ja reducers, mutta toteutus on WordPressin tarpeisiin räätälöity.

Tärkeää on ymmärtää, että Data Store ei ole vain kehittäjätyökalu. Se on editorin selkäranka.

State Gutenbergissä

Mitä state tarkoittaa Block Editorissa

State tarkoittaa kaikkea sitä dataa, joka kuvaa editorin nykytilaa. Tämä ei ole vain sisältöä, vaan myös käyttöliittymän tila. Esimerkkejä:

  • mitkä lohkot ovat olemassa

  • missä järjestyksessä lohkot ovat

  • mikä lohko on valittuna

  • onko sivu tallennettu

  • mitä asetuspaneeleja on auki

  • mikä postaus on kyseessä

Kun state muuttuu, editori renderöityy uudelleen. Tämä tapahtuu hallitusti Data Storen kautta.

Immutability ajattelutapana

Gutenbergin state on käytännössä immuuttia. Muutoksia ei tehdä suoraan olemassa olevaan tilaan, vaan aina luodaan uusi versio. Tämä mahdollistaa ominaisuuksia kuten undo ja redo ilman monimutkaista kirjanpitoa.

Arkkitehtonisesti tämä on kriittinen valinta. Se lisää hieman muistinkäyttöä, mutta tuo vastineeksi luotettavan ja jäljitettävän tilanhallinnan.

Core Data Storet

core/block-editor

Tämä on ehkä tärkein yksittäinen store Gutenbergissä. Se sisältää kaiken lohkoihin liittyvän tilan: lohkopuun, valinnat, fokuksen, lohkojen ominaisuudet ja niiden järjestyksen.

Kun lohko lisätään, poistetaan tai muokataan, muutos kulkee core/block-editor-storen kautta. Kaikki visuaaliset muutokset editorissa ovat seurausta tämän storen tilasta.

core/editor

core/editor vastaa postauksen tai sivun tilasta laajemmassa mielessä. Se sisältää tiedot kuten:

  • postauksen ID

  • tallennustila

  • julkaisutila

  • post meta

  • autosave-tila

Block Editor ei ole vain lohkojen muokkaaja, vaan postauksen hallintatyökalu, ja core/editor on tämän vastuualue.

core/data ja core

core/data toimii eräänlaisena yleisenä tiedonhallintakerroksena. Se huolehtii esimerkiksi REST API -kutsujen välimuistista ja synkronoinnista. core-store puolestaan tarjoaa perustason tiedot WordPress-ympäristöstä.

Nämä storet tekevät editorista reaktiivisen myös ulkoiselle datalle.

Actions: miten state muuttuu

Intentio, ei suora muutos

Actions ovat tapahtumia, jotka kuvaavat mitä halutaan tapahtuvan, eivät miten se tapahtuu. Esimerkiksi “insertBlock” ei kerro, miten lohko lisätään lohkopuuhun, vaan että lohko halutaan lisätä.

Reducerit ottavat tämän intentiotiedon ja tuottavat uuden staten. Tämä erottaa käyttöliittymän ja datalogikan toisistaan.

Deterministinen muutosketju

Yksi Data Storen suurimmista eduista on se, että jokainen muutos on deterministinen. Sama action, samassa tilassa, tuottaa aina saman lopputuloksen.

Tämä tekee editorista testattavan ja ennustettavan. Se myös mahdollistaa kehittäjälle syvemmän ymmärryksen siitä, miksi jokin tila syntyi.

Selectors: miten dataa luetaan

Johdettu tila

Selectors eivät vain hae dataa suoraan statesta. Ne voivat myös muodostaa johdettua dataa. Esimerkiksi “getSelectedBlock” ei ole suoraan tallennettu tieto, vaan tulos usean tilakentän yhdistelmästä.

Tämä vähentää tarpeetonta logiikkaa käyttöliittymäkomponenteissa ja keskittää datan käsittelyn yhteen paikkaan.

Suorituskyky ja memoisaatio

Selectors on usein memoisoitu, eli ne eivät laske arvoaan uudelleen, ellei niiden käyttämä state ole muuttunut. Tämä on kriittistä editorin suorituskyvylle, koska komponentteja on paljon ja renderöinti tapahtuu usein.

Huonosti kirjoitettu selector voi aiheuttaa turhia uudelleenrenderöintejä ja tehdä editorista tahmean.

Subscription-malli ja reaktiivisuus

Komponentit kuuntelevat statea

Gutenbergin React-komponentit eivät kysy dataa suoraan. Ne tilaavat tietoa storesta. Kun kyseinen data muuttuu, komponentti renderöityy uudelleen.

Tämä malli mahdollistaa erittäin hienojakoisen päivittymisen. Kaikki ei päivity, vain se mikä tarvitsee.

useSelect ja useDispatch

Modernissa Gutenberg-kehityksessä käytetään React hookeja, kuten useSelect ja useDispatch. Ne tekevät Data Store -integraatiosta deklaratiivista ja selkeää.

Komponentti kertoo mitä dataa se tarvitsee ja mitä toimintoja se voi kutsua. Se ei huolehdi siitä, mistä data tulee tai minne se menee.

Omien Data Storejen luominen

Milloin oma store on perusteltu

Oma Data Store on perusteltu silloin, kun laajennus hallitsee omaa monimutkaista tilaansa, joka ei kuulu core-storeihin. Esimerkiksi monivaiheinen editorityökalu tai laaja lisäosan hallintanäkymä hyötyy omasta storesta.

Pienissä tapauksissa paikallinen komponenttitila on usein parempi ratkaisu.

Integraatio core-storeihin

Omat storet voivat kommunikoida core-storejen kanssa. Tämä mahdollistaa laajennusten syvän integraation editoriin ilman, että ydintä tarvitsee muokata.

Tässä kohtaa Gutenbergin arkkitehtuuri näyttää vahvuutensa: laajennukset eivät ole irrallisia, vaan osa samaa tilamallia.

Yleisimmät virheet staten käsittelyssä

Liiallinen state

Kaikkea ei tarvitse laittaa Data Storeen. Jos tieto ei vaikuta muihin komponentteihin tai editorin logiikkaan, paikallinen state on usein parempi. Ylisuuri store tekee järjestelmästä raskaan ja vaikeasti hahmotettavan.

Sivuvaikutukset väärässä paikassa

Reducerien tulee olla puhtaita. Sivuvaikutukset, kuten API-kutsut, kuuluvat resolvereihin tai erillisiin efekteihin. Kun tämä raja hämärtyy, bugien jäljittäminen vaikeutuu merkittävästi.

Selectorien väärinkäyttö

Selector ei ole paikka tehdä raskasta laskentaa tai sivuvaikutuksia. Se on lukija, ei toimija. Kun tämä periaate rikotaan, suorituskyky kärsii.

Data Store osana WordPressin tulevaisuutta

Block Editor ei ole vain editori. Se on malli sille, miten WordPressin hallintakäyttöliittymät tulevaisuudessa rakennetaan. Data Store ja keskitetty state-hallinta mahdollistavat laajennettavan, testattavan ja ennustettavan käyttöliittymän.

Yhä useampi WordPressin osa nojaa wp.dataan, ja tämä suunta tulee vain vahvistumaan. Kehittäjälle tämä tarkoittaa, että Data Storen ymmärtäminen ei ole valinnainen taito, vaan perusosa modernia WordPress-osaamista.

Lopuksi: Gutenberg on tila, ei näkymä

Kun Block Editor tuntuu monimutkaiselta, syy ei ole Reactissa tai JavaScriptissä sinänsä. Syy on siinä, että editori on tilaohjattu sovellus, ei perinteinen lomake. Data Store ja state ovat tämän ajattelutavan ydin.

Kun tämän oivaltaa, Gutenberg lakkaa olemasta mystinen. Se muuttuu järjestelmäksi, joka tekee juuri sen mitä sen tila sanoo. Ja juuri siksi se on niin voimakas – ja niin vaativa – alusta kehittäjälle.

Aiheeseen liittyvät artikkelit

google

Yleisimmät virheet WooCommerce-kaupoissa

google

Kuinka rakentaa toimiva verkkokauppa WordPressillä

google

Näin automatisoit WordPress-sivuston rutiinitehtävät

google

Parhaat työkalut WordPress-sivuston ylläpitoon

google

Kuinka hallita useita WordPress-sivustoja tehokkaasti

Kotisivut ovat verkkosivustoja

Kuinka hankkia laadukkaita linkkejä sivustollesi

google

Mitä ovat backlinkit ja miksi ne ovat tärkeitä

Sovellus

Avainsanatutkimus ilman maksullisia työkaluja

Google

Näin kirjoitat sisältöä joka sijoittuu Googlessa

google

Mitä hakukoneoptimointi tarkoittaa käytännössä

Facebook X WhatsApp

Uusimmat @harrasteblogissa

Yleisimmät virheet WooCommerce-kaupoissa

12.4.2026

WooCommerce on tehokas alusta verkkokaupalle, mutta monet kaupat jäävät keskinkertaisiksi – ei siksi, että alusta olisi huono, vaan...

Lue lisää
Facebook X WhatsApp Kopioi linkki

Kuinka rakentaa toimiva verkkokauppa WordPressillä

12.4.2026

Toimivan verkkokaupan rakentaminen WordPressillä ei ole pelkästään tekninen projekti – se on yhdistelmä oikeaa alustaa, hyvää käyttöko...

Lue lisää
Facebook X WhatsApp Kopioi linkki

Näin automatisoit WordPress-sivuston rutiinitehtävät

7.4.2026

WordPress-sivuston ylläpito sisältää paljon toistuvia tehtäviä: päivityksiä, varmuuskopioita, tietoturvatarkistuksia ja optimointia...

Lue lisää
Facebook X WhatsApp Kopioi linkki

Parhaat työkalut WordPress-sivuston ylläpitoon

7.4.2026

WordPress-sivuston ylläpito ei ole pelkkää sisällön päivittämistä. Se sisältää tietoturvaa, varmuuskopioita, suorituskyvyn optimoi...

Lue lisää
Facebook X WhatsApp Kopioi linkki

Kuinka hallita useita WordPress-sivustoja tehokkaasti

7.4.2026

Useiden WordPress-sivustojen hallinta voi nopeasti muuttua sekavaksi, jos jokainen sivusto elää omaa elämäänsä. Päivitykset, varmuus...

Lue lisää
Facebook X WhatsApp Kopioi linkki

Kuinka hankkia laadukkaita linkkejä sivustollesi

3.4.2026

Laadukkaiden backlinkkien hankkiminen ei ole temppuilua tai massaspämmiä, vaan pitkälti hyvän sisällön ja fiksun jakelun yhdistelmä. Jos...

Lue lisää
Facebook X WhatsApp Kopioi linkki

Tilaa artikkelit sähköpostiisi

Tilaa uutiskirje

Kategoriat

Siirtyy valittuun kategoriaan.

Harrasteblogi.site on kattava IT-aiheinen harrasteblogi, joka keskittyy erityisesti kotisivujen tuotantoon, verkkokehitykseen ja digitaalisiin ratkaisuihin.

#A11y#Accessibility#actions#actionswp#AdminInterface#adminui#ajansäästö#ammattilaisuus#api#application#applicationdesign#applicationstate#arkkitehtuuri#async#asynkroninen#autosave#AvoinLähdekoodi#backend#BestPractices#blockapi#blockarchitecture#blockbased#blockbasededitor#blockdevelopment#blockeditor#Blocks#bootstrapping#bottleneck#browserstorage#cache#caching#capabilities#cleanarchitecture#cleancode#codinglife#collaboration#collaborativeediting#componentbased#componentlibrary#components#componentsystem#consumer#contenteditor#context#contextapi#controls#coreblockeditor#coredata#coreeditor#corestore#create#crud#css#cssinjs#cursor#customblocks#customization#customizationapi#customwp#datacache#datafetching#datamodel#datapersistence#datapipeline#datastore#datavirta#debug#debugging#decoupling#delete#dependency#derivedstate#deserialization#designsystem#deterministic#devcommunity#developerexperience#developerlife#DevTools#digiosaaja#digiprojekti#dispatch#documentation#dokumentaatio#dx#editor#editorhistory#editorlayout#editorpermissions#editorstate#effects#emotion#enterprise#entities#entityrecords#eventdriven#eventhandling#events#extensibility#fidev#filters#filterswp#flow#focus#forms#frontend#frontendkehitys#fullstack#functionalcomponents#future#futureofwordpress#futureproof#globalstate#growth#gutenberg#GutenbergEditor#gutenbergproject#headlesswordpress#history#hooks#http#hydration#i18n#immutability#immutable#initialization#inputs#inspector#integrationtesting#intentbased#internationalization#itammattilainen#javascript#js#json#Kasvu#Käyttökokemus#käyttöliittymä#keyboard#konsultointi#koodaaja#koodarielämä#l10n#laajennettavuus#laatukehitys#layout#learning#lifecycle#lisäosa#localization#localstate#localstorage#logging#Lokitus#maintainability#memoization#memoizedselectors#middleware#modernikehitys#moderniwordpress#monisite#Multisite#network#networksite#objectcache#ohjelmistoarkkitehtuuri#opensource#oppiminen#optimointi#panels#performance#performanceprofiling#performanssi#Permissions#plugin#pluginkehitys#postdata#postmeta#poststate#predictable#produktiivisuus#professionaldev#Profiling#projektikehitys#props#provider#pullonkaula#quality#räätälöity#räätälöitykehitys#ratkaisumallit#React#reacthooks#reactjs#read#realtime#realtimeediting#records#redo#reducers#redux#reduxdevtools#reduxlike#rendering#requests#rerender#resolvers#responses#responsive#ResponsiveDesign#RESTAPI#richtext#roadmap#roles#Scalability#security#selection#selectors#separationofconcerns#serialization#sessionstorage#shortcuts#sidebar#sideeffects#singlepageapp#Skaalautuvuus#softwarearchitecture#spa#state#statehallinta#statehydration#statemanagement#statevsprops#storage#styledcomponents#styles#styling#subscribe#subscription#suomidev#suorituskyky#systemdesign#technicaldesign#teemakehitys#testability#testing#theme#tietoturva#timetravel#toolbar#tuottavuus#ui#ui-library#undo#unidirectionaldataflow#unittesting#update#usedispatch#useselect#UX#virtualdom#visualeditor#webapp#webarkkitehtuuri#webdeveloper#webkehitys#webkoodaaja#webprojekti#wordpress#wordpresscomponents#wordpresscore#WordPressFuture#WordPresskehitys#WordPressSuomi#WPAdmin#wpblockeditor#wpblocks#WPCommunity#WPcore#WPdata#wpdev#wpdeveloper#wpdevtools#wphooks#wpkehitys#wpobjectcache#wysiwyg#ylläpidettävyys#yrityskehitys

Siirtyy valittuun sivuun.

Siirtyy valittuun kategoriaan.

Harrasteblogi.site on kattava IT-aiheinen harrasteblogi, joka keskittyy erityisesti kotisivujen tuotantoon, verkkokehitykseen ja digitaalisiin ratkaisuihin.

  • Tilaa uutiskirje
  • Kehitys ja tietoturva
  • Tietosuojaseloste
  • Käyttöehdot
  • UKK
  • Eonline
  • Sivustokartta
  • Facebook
  • X
  • Instagram
  • RSS
© 2022-2026 @Harrasteblogi / harrasteblogi@gmail.com
Käytämme evästeitä
Parannamme sivuston toimivuutta ja analytiikkaa evästeiden avulla. Voit hallita asetuksia alla.

Välttämättömät

Tämä kategoria on pakollinen sivuston toiminnan kannalta.
  • Tämä kategoria on olennainen osa sivuston toimintaa. Sen avulla sisältö järjestyy oikein ja tietyt sivuston ominaisuudet toimivat niin kuin pitää. Kategoriaa ei voi poistaa, koska se on välttämätön rakenteen ja käytettävyyden kannalta.
  • Lue lisää evästeistä tietosuojaselosteesta.

Analytiikka

Evästeet, joilla mitataan kävijämääriä ja käyttöä.
  • Analytiikkaevästeet auttavat meitä ymmärtämään, miten kävijät käyttävät sivustoa. Näiden evästeiden avulla voimme seurata esimerkiksi sivulla vietettyä aikaa, suosituimpia sisältöjä ja käyttäjäpolkuja. Tietojen avulla kehitämme sivustoa toimivammaksi ja tarjoamme paremman käyttökokemuksen.
  • Lue lisää evästeistä tietosuojaselosteesta.

Markkinointi

Evästeet kohdennettuun mainontaan ja seurantaan.
  • Markkinointievästeet mahdollistavat yksilöidyn ja kiinnostukseen perustuvan mainonnan. Näiden evästeiden avulla voimme näyttää sinulle sisältöä ja tarjouksia, jotka vastaavat paremmin omia mieltymyksiäsi. Evästeet auttavat myös mainonnan tehokkuuden mittaamisessa ja mainosten kohdentamisessa eri kanavissa
  • Lue lisää evästeistä tietosuojaselosteesta.
@harrasteblogi