antd InputNumber: 执行函数 onChangeComplete 而不是 onChange
antd InputNumber: execute function onChangeComplete instead of onChange
<Form.Item
label="Amount"
name={[index, 'amount']}
>
<InputNumber
style={{ width: '100%' }}
min={1}
// onChange={() => {
// const array = [...form.getFieldValue('bankAccount')]
// setCurrentAccountArray(array)
// }}
/>
</Form.Item>
在上面的代码中你可以看到我强制更新了currentAccountArray的状态,
我想在值完全更改后执行此操作,而不是在每次按键时执行的 onChange...
有什么办法可以实现吗?我不想使用 onEnterPressed。
也许使用 onInput 而不是 onChange?
- 要么 -
也许是包裹在闭包中的延迟调用?
function setCurrentAccountArray(arr){
// whatever your doing here
console.log("hi", arr)
}
var TO_later;
function delayedCall(fn, arg, delay){
clearTimeout(TO_later);
TO_later = setTimeout((function(Vfn, Varg){
return function(){
Vfn(Varg);
}
})(fn, arg), delay);
}
<Form.Item
label="Amount"
name={[index, 'amount']}
>
<InputNumber
style={{ width: '100%' }}
min={1}
onChange={() => {
const array = [...form.getFieldValue('bankAccount')]
delayedCall(setCurrentAccountArray, array, 300)
}}
/>
</Form.Item>
<Form.Item
label="Amount"
name={[index, 'amount']}
>
<InputNumber
style={{ width: '100%' }}
min={1}
// onChange={() => {
// const array = [...form.getFieldValue('bankAccount')]
// setCurrentAccountArray(array)
// }}
/>
</Form.Item>
在上面的代码中你可以看到我强制更新了currentAccountArray的状态, 我想在值完全更改后执行此操作,而不是在每次按键时执行的 onChange...
有什么办法可以实现吗?我不想使用 onEnterPressed。
也许使用 onInput 而不是 onChange? - 要么 - 也许是包裹在闭包中的延迟调用?
function setCurrentAccountArray(arr){
// whatever your doing here
console.log("hi", arr)
}
var TO_later;
function delayedCall(fn, arg, delay){
clearTimeout(TO_later);
TO_later = setTimeout((function(Vfn, Varg){
return function(){
Vfn(Varg);
}
})(fn, arg), delay);
}
<Form.Item
label="Amount"
name={[index, 'amount']}
>
<InputNumber
style={{ width: '100%' }}
min={1}
onChange={() => {
const array = [...form.getFieldValue('bankAccount')]
delayedCall(setCurrentAccountArray, array, 300)
}}
/>
</Form.Item>