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 benzerconst 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ı?
Burada hiçbir şey yanlış görünüyor mu? – whitep4nther
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
@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