Как я могу получить действительные значения реквизита в опровергнутых обратных вызовах React Functional Component, Это работало в React Class Component, но я понятия не имею, как достичь этого поведения в функциональном компоненте с помощью хуков.
import React from "react";
import ReactDOM from "react-dom";
import debounce from "lodash.debounce";
const TestFunc = ({ count, onClick }) => {
const handleClick = debounce(() => {
onClick();
console.log(count);
}, 500);
return (
<div>
<button type="button" onClick={handleClick}>
Func: {count}
</button>
</div>
);
};
class TestClass extends React.Component {
handleClick = debounce(() => {
this.props.onClick();
console.log(this.props.count);
}, 500);
render() {
return (
<div>
<button type="button" onClick={this.handleClick}>
Class: {this.props.count}
</button>
</div>
);
}
}
const App = () => {
const [countClass, setCountClass] = React.useState(0);
const [countFunc, setCountFunc] = React.useState(0);
return (
<div>
<TestFunc count={countFunc} onClick={() => setCountFunc(countFunc + 1)} />
<TestClass
count={countClass}
onClick={() => setCountClass(countClass + 1)}
/>
</div>
);
};
ReactDOM.render(<App />, document.getElementById("root"));
КогдаВы нажимаете кнопку функционального компонента, она записывает предыдущее значение count
prop в консоль, но это уже изменилось с помощью обработчика onClick
, в то же время кнопка компонента класса записывает фактическое значение count
prop после того, как оно былоувеличивается на onClick
обработчик.Итак, как я могу получить фактические значения пропеллера в функциональном компоненте?