Underscore: _.debounce() рдШрдЯрдирд╛ рд╣рд╛рд░ рдЬрд╛рддрд╛ рд╣реИредcurrentTarget

рдХреЛ рдирд┐рд░реНрдорд┐рдд 23 рдЕрдХреНрддреВре░ 2014  ┬╖  8рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: jashkenas/underscore

_.debounce() рдХреЗ рд╕рд╛рде _.debounce() addEventListener рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдореИрдВ event.currentTarget рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрде рд╣реВрдВред

рдпрд╣рд╛рдБ рдПрдХ рдмреЗрд▓рд╛ рд╣реИ ред

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

@jridgewell рдХрд┐рд╕реА рднреА рд╡рд┐рдЪрд╛рд░ рдХреЛ рд░рд┐рдПрдХреНрдЯ рдСрди рдЪреЗрдВрдЬ рдореЗрдВ рдЗрд╕реЗ рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред рдЬрдм рдореИрдВ рдмрд╣рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдореИрдВ рдЕрдкрдиреЗ рдСрдирдЪреЗрдВрдЬ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдЙрдЪрд┐рдд рдШрдЯрдирд╛ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реВрдВ рд▓реЗрдХрд┐рди рдЬрдм рдореИрдВ _.debounce рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдореИрдВ рдЙрдЪрд┐рдд event рдЦреЛ рджреЗрддрд╛ рд╣реВрдВ - рдиреАрдЪреЗ рджреЗрдЦреЗрдВ

// in my render
<input onChange={ _.debounce(this.updateNote.bind(this), 500) } />
// my change handler
updateNote(event) {
    // undefined on event.target, get lodash event not <input/> event target
    const note = event.target.value
    this.sendNote({ note })
 }

рд╕рднреА 8 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдпрджрд┐ рд╕рдВрдкрддреНрддрд┐ рдЕрдВрдбрд░рд╕реНрдХреЛрд░ рдХреЗ рджрд╛рдпрд░реЗ рд╕реЗ рдмрд╛рд╣рд░ рдЗрд╡реЗрдВрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рд╕рдВрджрд░реНрдн рдкрд░ рдмрджрд▓реА рдЧрдИ рд╣реИред рдпрджрд┐ рдЖрдк jQuery рдЬреИрд╕реЗ lib рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рд╕рд┐рдВрдереЗрдЯрд┐рдХ рдИрд╡реЗрдВрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдЖрдк рдЗрд╕рд╕реЗ рдЙрдмрд░рдиреЗ рд╡рд╛рд▓реЗ рд╣реИрдВред event рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдбреАрдУрдПрдо рдХрд╛ рдкреНрд░рдЪрд╛рд░ рдХрд░рддрд╛ рд╣реИ, рд╢реНрд░реЛрддрд╛ рдХреЗ рд╕рд╛рде рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рдХреЗ рд▓рд┐рдП currentTarget рдмрджрд▓рддрд╛ рд╣реИред рдмреЗрд▓рд╛

рджреВрд╕рд░рд╛ рдкреИрд░рд╛рдореАрдЯрд░ рдкрд╛рд╕ рдХрд░рдирд╛ рдЗрд╕рдХреЗ рдЖрд╕рдкрд╛рд╕ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдмреЗрд▓рд╛

var debounced = _.debounce(fn, 50);
document.querySelector('.debounced-input').addEventListener('keyup', function(event) {
    debounced(event, event.currentTarget);
});

рд╣рд╛рдВ, рдпрд╣ рдЕрдВрдбрд░рд╕реНрдХреЛрд░ рдХреЗ рджрд╛рдпрд░реЗ рд╕реЗ рдмрд╛рд╣рд░ рд╣реИред gator рдЬреИрд╕реЗ DOM рдИрд╡реЗрдВрдЯ рдорд╛рдЗрдХреНрд░реЛ рдлреНрд░реЗрдорд╡рд░реНрдХ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ

JQuery рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдЗрд╕рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдпрд╣рд╛рдВ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдореИрдВ рдЕрднреА рднреА рдЙрд╕ рддрддреНрд╡ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдЬреЛ currentTarget рдореЗрдВ рдЖрдорддреМрд░ рдкрд░ this рдХреЗ рд╕рд╛рде рд╣реЛрддрд╛ рд╣реИ; рдореИрдВрдиреЗ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрднреА рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдЦреЛрд▓рд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЬреЛ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВ рд╡рд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдкреЗрдХреНрд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реИред

@jridgewell рдХрд┐рд╕реА рднреА рд╡рд┐рдЪрд╛рд░ рдХреЛ рд░рд┐рдПрдХреНрдЯ рдСрди рдЪреЗрдВрдЬ рдореЗрдВ рдЗрд╕реЗ рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред рдЬрдм рдореИрдВ рдмрд╣рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдореИрдВ рдЕрдкрдиреЗ рдСрдирдЪреЗрдВрдЬ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдЙрдЪрд┐рдд рдШрдЯрдирд╛ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реВрдВ рд▓реЗрдХрд┐рди рдЬрдм рдореИрдВ _.debounce рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдореИрдВ рдЙрдЪрд┐рдд event рдЦреЛ рджреЗрддрд╛ рд╣реВрдВ - рдиреАрдЪреЗ рджреЗрдЦреЗрдВ

// in my render
<input onChange={ _.debounce(this.updateNote.bind(this), 500) } />
// my change handler
updateNote(event) {
    // undefined on event.target, get lodash event not <input/> event target
    const note = event.target.value
    this.sendNote({ note })
 }

рдореЗрд░рд╛ рджреВрд╕рд░рд╛ рд╕реБрдЭрд╛рд╡ рджреЗрдЦреЗрдВред

рдпрд╣ рдХреНрд░рд┐рдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдорд╛рдорд▓рд╛ рд╣реИред рдЖрдкрдХреЛ рдШрдЯрдирд╛ рдХреЛ рдЬрд╛рд░реА рд░рдЦрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред рдСрдирдЪреЗрдВрдЬ рдХреЛ рдПрдХ рдирд┐рд░рдВрддрд░ рдХреЙрд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдлрд┐рд░ рд▓рдЧрд╛рддрд╛рд░ рдШрдЯрдирд╛ рдХреЛ рд╡рд┐рд╡рд╛рджрд┐рдд рд╣реИрдВрдбрд▓рд░ рдХреЛ рдкрд╛рд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП:

onChange_persist = (e) =>
{
    e.persist();
    e.onChange_debounced(e);
}
рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

umarfarooq125 picture umarfarooq125  ┬╖  8рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

clouddueling picture clouddueling  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

jdalton picture jdalton  ┬╖  6рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

jdalton picture jdalton  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

sky0014 picture sky0014  ┬╖  8рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ