Skip to content
Mithril.js 2
Main Navigation ÚtmutatóAPI

magyar

English
简体中文
繁體中文
Español
Français
Русский
Português – Brasil
Deutsch
日本語
한국어
Italiano
Polski
Türkçe
čeština

magyar

English
简体中文
繁體中文
Español
Français
Русский
Português – Brasil
Deutsch
日本語
한국어
Italiano
Polski
Türkçe
čeština

Megjelenés

Sidebar Navigation

API

Alapvető API

m(selector, attributes, children)

render(element, vnodes)

mount(root, component)

route(root, defaultRoute, routes)

request(options)

parseQueryString(string)

buildQueryString(object)

buildPathname(object)

parsePathname(string)

trust(html)

fragment(attrs, children)

redraw()

censor(object, extra)

Opcionális API

stream()

Útmutató

Ezen az oldalon

censor(object, extra) ​

Leírás ​

Létrehoz egy sekély másolatot egy objektumról, amelyből eltávolítja az életciklus-attribútumokat és a megadott egyéni attribútumokat.

javascript
var attrs = { one: 'two', enabled: false, oninit: function () {} };
var censored = m.censor(attrs, ['enabled']);
// {one: "two"}

Szignatúra ​

censored = m.censor(object, extra)

ArgumentumTípusKötelezőLeírás
objectObjectIgenEgy kulcs-érték párokat tartalmazó objektum, amelyből az attribútumok eltávolításra kerülnek.
extraArray<String>NemTovábbi eltávolítandó tulajdonságok neveinek tömbje.
visszatérési értékObjectAz eredeti objektum, ha nem volt eltávolítandó tulajdonság, egyébként egy sekély másolat az eltávolított tulajdonságokkal.

Hogyan kell olvasni a szignatúrákat

Hogyan működik ​

Általában nincs szükség erre a metódusra, elegendő csak a kívánt attribútumokat megadni. Azonban néha kényelmesebb lehet az összes nem kívánt attribútumot egy másik elemnek átadni. Ez gyakran teljesen ésszerű, de komoly problémákhoz vezethet, ha az életciklus metódusok kétszer kerülnek meghívásra.

javascript
function SomePage() {
  return {
    view: function () {
      return m(SomeFancyView, {
        oncreate: function () {
          sendViewHit(m.route.get(), 'some fancy view');
        },
      });
    },
  };
}

function SomeFancyView() {
  return {
    view: function (vnode) {
      return m('div', vnode.attrs, [
        // !!!
        // ...
      ]);
    },
  };
}

Ez ártalmatlannak tűnik, de problémát okoz: minden alkalommal kétszer kerül rögzítésre a megtekintés, amikor erre a nézetre navigálunk. Itt válik fontossá az m.censor: lehetővé teszi, hogy eltávolítsuk az oncreate attribútumot, így az csak egyszer kerül meghívásra, és a hívó fél biztos lehet abban, hogy nem kell szokatlan hibákkal szembesülnie emiatt.

javascript
// Javítva
function SomeFancyView() {
  return {
    view: function (vnode) {
      return m('div', m.censor(vnode.attrs), [
        // ...
      ]);
    },
  };
}

Hasonló problémákba ütközhetsz a kulcsokkal is.

javascript
function SomePage() {
  return {
    view: function () {
      return m(
        Layout,
        {
          pageTitle: 'Some Page',
          key: someKey,
        },
        [
          // ...
        ]
      );
    },
  };
}

function Layout() {
  return {
    view: function (vnode) {
      return [
        m('header', [m('h1', 'My beautiful web app'), m('nav')]),
        m('.body', vnode.attrs, [
          // !!!
          m('h2', vnode.attrs.pageTitle),
          vnode.children,
        ]),
      ];
    },
  };
}

Ez végül hibát fog eredményezni, mert a Mithril.js ezt látja a Layout vnode létrehozásakor:

javascript
return [
  m('header', [m('h1', 'My beautiful web app'), m('nav')]),
  m('.body', { pageTitle: 'Some Page', key: someKey }, [
    m('h2', 'Some Page'),
    [
      /* ... */
    ],
  ]),
];

Valószínűleg nem fogod ezt első pillantásra észrevenni, különösen összetettebb esetekben, ahol indirekciók és/vagy egyéb problémák is felmerülhetnek. Ennek javításához el kell távolítanod a key: attribútumot. Eltávolíthatod az egyéni pageTitle attribútumot is, mivel nem ad hozzá valódi értéket a DOM-hoz.

javascript
// Javítva
function Layout() {
  return {
    view: function (vnode) {
      return [
        m('header', [m('h1', 'My beautiful web app'), m('nav')]),
        m('.body', m.censor(vnode.attrs, ['pageTitle']), [
          m('h2', vnode.attrs.pageTitle),
          vnode.children,
        ]),
      ];
    },
  };
}
Pager
Előző oldalredraw()
Következő oldalstream()

A MIT licenc alapján kiadva.

Copyright (c) 2024 Mithril Contributors

https://mithril.js.org/censor.html

A MIT licenc alapján kiadva.

Copyright (c) 2024 Mithril Contributors