Skip to content
Mithril.js 2
Main Navigation NávodAPI

čeština

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

čeština

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

Vzhled

Sidebar Navigation

API

Základní 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)

Volitelné API

stream()

Návod

Na této stránce

censor(object, extra) ​

Popis ​

Vrací mělkou kopii objektu, ze které jsou odstraněny atributy životního cyklu a volitelné uživatelské atributy.

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

Signatura ​

censored = m.censor(object, extra)

ArgumentTypeRequiredDescription
objectObjectYesMapa klíč-hodnota.
extraArray<String>NoDalší vlastnosti, které mají být odstraněny.
returnsObjectPůvodní objekt, pokud nebyly nalezeny žádné vlastnosti k odstranění; jinak se vrátí mělce klonovaný objekt s odebranými vlastnostmi.

Jak číst signatury

Jak to funguje ​

Běžně tuto metodu nepotřebujete a budete chtít explicitně zadat pouze atributy, které chcete použít. Někdy je ale pohodlnější předat všechny atributy, i když si nejste jisti, zda je cílový prvek potřebuje. To je často přijatelné, ale může to vést k problémům s metodami životního cyklu, které se volají opakovaně.

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, [
        // !!!
        // ...
      ]);
    },
  };
}

Vypadá to neškodně, ale vytváří to problém: sendViewHit se volá dvakrát pokaždé, když se na toto zobrazení přejde. Zde přichází na řadu m.censor: umožňuje vám odstranit oncreate z atributů, aby se volal pouze jednou, a zároveň zachovat srozumitelnost volajícího kódu a předejít neočekávaným chybám.

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

Podobné problémy mohou nastat i s klíči:

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,
        ]),
      ];
    },
  };
}

To by nakonec vyvolalo chybu, protože Mithril.js vidí při vytváření Layout vnode toto:

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

Pravděpodobně byste si toho na první pohled nevšimli, zejména v reálnějších scénářích, kde se používají složitější postupy a/nebo se vyskytují jiné problémy. Chcete-li to napravit, musíte podobně odstranit atribut key. Můžete také odstranit vlastní atribut pageTitle, protože není pro DOM relevantní.

javascript
// Opraveno
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
Předchozí stránkaredraw()
Další stránkastream()

Vydáno pod licencí MIT.

Copyright (c) 2024 Mithril Contributors

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

Vydáno pod licencí MIT.

Copyright (c) 2024 Mithril Contributors