2016-04-06 23 views
0

Yaşadığım şey, onClick dinleyicileri, işleyicilerin arasında birikir ve bir onay kutusunu değiştirdiğimde daha fazla kez ateş eder.React-Bootstrap onClick tetikleyicileri (?) Birikir ve birçok kez onay kutusunu işaretleyin

böyle, onay kutularını oluşturmak için bir dizi üzerinde haritalama değilim:

onay kutusu şuna benzer
const list = permissions[cat].map((p) => { 
    // map the role's permissions to the checked state of the "all" permission checkboxes 
    const checked = _.findWhere(role.permissions, {id: p.id}) ? true : false; 

    return <CheckBox key={p.id} 
        checked={checked} 
        label={p.operation} 
        onChange={e => this.togglePermission(p.id)} />; 
    }); 

:

togglePermission(id) { 
    this.props.togglePermissionOnRole(id); 
} 
:

const CheckBox = ({ checked, label, onChange }) => (
    <Input 
      checked={checked} 
      type="checkbox" 
      label={prettyPrint(label)} 
      onChange={onChange} /> 
); 

ve this.togglePermssion şöyle

Neler oluyor, bir onay kutusunu değiştirdiğimde, redux eylemi gönderilir ve ent yeniden oluşturulur. Bir onay kutusunu tekrar açtığımda (aynı veya başka), this.togglePermission tekrar tekrar defalarca çağrılır. Daha fazla onay kutusunu değiştirdiğimde, yürütme süresinin katlanarak arttığı görülüyor.

Bu davranışın neden gerçekleştiğine dair herhangi bir fikir var mı?

+0

Burada hiçbir şey yanlış görünüyor mu? – whitep4nther

+0

Evet, daha fazla kod burada yararlı olacaktır. ' 've' list 'kullandığınız render yönteminin geri kalanını uygulamanızı gösterir misiniz? – azium

+0

@azium 'rea-bootstrap' - render yönteminin geri kalanını ekledim ama sanırım orada ilginç bir şey yok. @Omarjmh bu benim kötüydü - ancak hem onChange hem de onClick öğesi aynı davranışı üretiyor. Eğer söyledikleriniz buysa, bir tıklama sonsuz çağrı yöntemi döngüsünü başlatmaz mı? Bu burada olmaz. – Zen

cevap

0

Aslında bunu anladım - Rollbar'ın JS pasajı tüm zaman boyunca çıktı.

İlgili konular