νμ¬ νλμ 무μμ λκΉ?
0.14.7μμ νμΈλμμ§λ§ 15.3.2μμλ μ€λ λ°μν©λλ€.
https://jsfiddle.net/dimitar/7ktbfetb/
class Foo extends React.Component {
render(){
const handleChange = _.debounce(this.props.onChange, 500);
return <input onChange={handleChange} />
}
}
ReactDOM.render(<Foo onChange={e => console.log(e.target, e)} />, document.querySelector('div'));
e.target
, null
λ°μ κ²μΌλ‘ μμ
λλ°μ΄μ€ μμ΄ μμλλ‘ μλν©λλ€. https://jsfiddle.net/dimitar/7ktbfetb/1/
https://github.com/facebook/react/commit/3285d834402a60d241188a1deacf8250b50239cf κ΄λ ¨ κ°λ₯μ± - https://github.com/facebook/react/blob/master/CHANGELOG.md#react -9
ν΄κ²° λ°©λ²μ μ°Ύλ μ¬λμ e.persist()
λ₯Ό μ¬μ©ν μ μμ΅λλ€.
μλ₯Ό λ€μ΄ return <input onChange={e => handleChange(e.persist()||e)} />
μ΄κ²μ λλ°μ΄μ€κ° μλνλ λ°©μ λλ¬Έμ λλ€. λ€μ μ΄λ²€νΈ 루νμ λν νΈμΆμ νΈμνκΈ° μν΄ setTimeoutμ μ¬μ©ν κ²μ λλ€. μΈκΈνλ―μ΄ νλ§μΌλ‘ μΈν΄ Reactλ μ΄λ―Έ ν©μ± μ΄λ²€νΈλ₯Ό νλ‘ λ°ννκ³ νλλ₯Ό μ¬μ€μ νμ΅λλ€. 리μ‘νΈμ μ΄λ²€νΈ νΈλ€λ¬ μΈλΆμ μ΄λ²€νΈκ° μ‘΄μ¬ν΄μΌ νλ λλ°μ΄μ€ λλ κΈ°ν λ€λ₯Έ κ²μ μ¬μ©νλ κ²½μ°(μ: λΉλκΈ° μ½λ) μ§μν΄μΌ ν©λλ€.
μ΄κ²μ μλλ κ²μ΄λ―λ‘ μ§κΈ λΉμ₯μ μ΄μ λν΄ ν μ μλ μΌμ΄ μμ΅λλ€. #6190μλ μ μ¬μ μΌλ‘ νλ§μ μ κ±°νλ κ²μ λν λͺ κ°μ§ λ Όμκ° μμ΅λλ€. νλ§μ λͺ μμ μΈ μ§μ μμ΄ μ½λκ° μλνλλ‘ ν΄μΌ ν©λλ€.
μ΄κ²μ λ°μ΄ν° νλ¦, λΆλ³μ± λ° λΆμμ© λ°©μ§λ₯Ό ν΄κ²°νκΈ° μν΄ μ€μ λ λ°λ‘ κ·Έ λ°μ μ리μ λ°λμ λλ€. κ΅¬μ± μμμ κ°μ²΄λ₯Ό μ λ¬νμ§λ§ μ€μλ‘ λμΆμ μμ±ν μ μλ GCμ μ¬μ©μλ₯Ό λΆμ νκΈ° λλ¬Έμ λμΌν μ΄λ²€νΈ 루ν λ΄μμ μ¬μ©ν΄μΌ νλ μ€λ μ·μΌ λΏμ λλ€...
κ·Έ λΉμμλ μ’μ μκ°μ΄μμμ§ λͺ¨λ₯΄μ§λ§ μ°λ¦¬ μ€ μΌλΆλ μ μ ν GCκ° κ°λ₯ν μλ²κ·Έλ¦° λΈλΌμ°μ λ§ μ§μνλ©΄ λ©λλ€. μλ§λ μ΄ μ κ·Ό λ°©μμ μ¬κ³ νλ λμ νλκ·Έ/νκ²½ λ³μλ₯Ό μ€μ νμ¬ νλ§μ λ μ μμ΅λλ€.
κ°μ₯ μ μ©ν λκΈ
ν΄κ²° λ°©λ²μ μ°Ύλ μ¬λμ
e.persist()
λ₯Ό μ¬μ©ν μ μμ΅λλ€.μλ₯Ό λ€μ΄
return <input onChange={e => handleChange(e.persist()||e)} />