Skip to content
Mithril.js 2
Main Navigation GuidaAPI

Italiano

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

Italiano

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

Aspetto

Sidebar Navigation

API

API principale

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)

API opzionale

stream()

Guida

In questa pagina

censor(object, extra) ​

Descrizione ​

Restituisce una copia superficiale di un oggetto, escludendo gli attributi del ciclo di vita di Mithril.js e qualsiasi attributo personalizzato specificato.

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

Firma ​

censored = m.censor(object, extra)

ArgomentoTipoRichiestoDescrizione
objectObjectSìUn oggetto chiave-valore (mappa).
extraArray<String>NoUn array di nomi di proprietà aggiuntive da escludere.
restituisceObjectL'oggetto originale se non ci sono proprietà da escludere, altrimenti una copia superficiale dell'oggetto con le proprietà specificate rimosse.

Come leggere le firme

Come funziona ​

Nella maggior parte dei casi, non è necessario questo metodo; è sufficiente specificare gli attributi desiderati. Tuttavia, a volte è più pratico passare tutti gli attributi, inclusi quelli sconosciuti, a un altro elemento. Questo è spesso accettabile, ma può causare problemi con i metodi del ciclo di vita, che potrebbero essere chiamati più volte.

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

Questo codice sembra innocuo, ma introduce un problema: la funzione sendViewHit viene chiamata due volte ogni volta che si naviga verso questa vista. È qui che m.censor diventa utile: permette di escludere oncreate dagli attributi, assicurando che venga eseguito una sola volta e prevenendo comportamenti inattesi.

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

Si possono riscontrare problemi simili anche con le chiavi:

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

Questo potrebbe causare un errore perché Mithril.js vedrebbe il vnode Layout in questo modo:

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

Probabilmente non lo si noterebbe subito, soprattutto in scenari più complessi con indirezioni e/o altri problemi. Per correggere questo, è necessario escludere l'attributo key. Si può anche escludere l'attributo personalizzato pageTitle, dato che la sua presenza nel DOM non apporta alcun valore.

javascript
// Corretto
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
Pagina precedenteredraw()
Pagina successivastream()

Rilasciato sotto la licenza MIT.

Copyright (c) 2024 Mithril Contributors

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

Rilasciato sotto la licenza MIT.

Copyright (c) 2024 Mithril Contributors