Skip to content
Mithril.js 2
Main Navigation KılavuzAPI

Türkçe

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

Türkçe

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

Görünüm

Sidebar Navigation

API

Çekirdek 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)

m.fragment(attrs, children)

redraw()

censor(object, extra)

İsteğe Bağlı API

stream()

Kılavuz

Bu sayfada

censor(object, extra) ​

Açıklama ​

Yaşam döngüsü özelliklerini ve belirtilen ek özellikleri atlayarak nesnenin sığ bir kopyasını döndürür.

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

İmza ​

censored = m.censor(object, extra)

ArgümanTipGerekliAçıklama
objectObjectEvetAnahtar-değer çiftlerini içeren nesne.
extraArray<String>HayırAtlanacak ek özelliklerin listesi.
dönerObjectAtlanacak özellik yoksa orijinal nesneyi, aksi takdirde atlanan özelliklere sahip sığ bir kopyasını döndürür.

İmzalar nasıl okunur

Nasıl Çalışır ​

Genellikle bu yönteme doğrudan ihtiyacınız olmaz ve yalnızca istediğiniz özellikleri açıkça belirtmek istersiniz. Ancak bazen, bilmediğiniz tüm özellikleri başka bir öğeye aktarmak daha pratik olabilir. Bu genellikle kabul edilebilir bir yaklaşımdır, ancak yaşam döngüsü yöntemlerinin birden çok kez çağrılması gibi beklenmedik durumlara yol açabilir.

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

Bu zararsız gibi görünse de, bir soruna neden olur: bu görünüme her geçişte iki kez istek gönderirsiniz. m.censor burada devreye girer: oncreate özelliğini filtreleyerek yalnızca bir kez çağrılmasını sağlar. Bu sayede, çağıran kişi bu durumdan kaynaklanan beklenmedik hatalarla uğraşmak zorunda kalmaz.

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

Benzer sorunlarla key (anahtarlar) özelliğiyle de karşılaşabilirsiniz:

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

Bu, bir hataya neden olur çünkü Mithril.js'nin Layout vnode'unu oluştururken gördüğü şey şudur:

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

Özellikle dolaylılığın veya başka karmaşıklıkların olduğu senaryolarda, bunu ilk bakışta fark etmek zor olabilir. Bunu düzeltmek için, benzer şekilde key: özelliğini sansürlemeniz gerekir. DOM'da bulunmasının bir anlamı olmadığından, özel pageTitle özelliğini de sansürleyebilirsiniz.

javascript
// Düzeltildi
function Layout() {
  return {
    view: function (vnode) {
      return [
        m('header', [m('h1', 'My beautiful web app'), m('nav')]),
        m('.body', m.censor(vnode.attrs, ['pageTitle', 'key']), [
          m('h2', vnode.attrs.pageTitle),
          vnode.children,
        ]),
      ];
    },
  };
}
Pager
Önceki sayfaredraw()
Sonraki sayfastream()

MIT Lisansı altında yayınlanmıştır.

Copyright (c) 2024 Mithril Contributors

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

MIT Lisansı altında yayınlanmıştır.

Copyright (c) 2024 Mithril Contributors