我已经创建了antd每次现场已经通过改变输出形式值到控制台窗体onValuesChange上的功能Form。
我的问题是Slider组件onValuesChange在拖动滑块时调用此函数,而我希望它位于onmouseup.
我知道onAfterChange滑块的事件只会触发,onmouseup但我不确定如何onValuesChange使用onAfterChange而不是onChange. 任何人都可以提供这方面的建议吗?
我已经创建了antd每次现场已经通过改变输出形式值到控制台窗体onValuesChange上的功能Form。
我的问题是Slider组件onValuesChange在拖动滑块时调用此函数,而我希望它位于onmouseup.
我知道onAfterChange滑块的事件只会触发,onmouseup但我不确定如何onValuesChange使用onAfterChange而不是onChange. 任何人都可以提供这方面的建议吗?
你永远不应该这样做!如果我知道目的,我可以更好地帮助你,
但这对你有用:
render() {
const { form, errorMessage } = this.props;
const { getFieldDecorator, setFieldsValue } = form;
return (
<Form>
<FormItem>
{getFieldDecorator(`slider`, {})(
<div>
<Slider onAfterChange={wantedValues => setFieldsValue({ slider: wantedValues })} range />
</div>,
)}
</FormItem>
</Form>
);
}
}
export default Form.create({
onValuesChange(props, changedValues, allValues) {
console.log('on change', allValues);
},
滑块的值和滑块字段的值是分开的,您正在手动更新字段值
我面临同样的问题,也许这是一种更简单的方法:
关键点是为这个滑块组件保持一个内部状态,并通过onChangeduring发送想要的值onAfterChange。
const MouseUpSlider = ({ value, onChange, ...rest }) => {
const [val, setVal] = useState(value)
return (
<Slider
value={val}
onAfterChange={(value) => onChange(value)}
onChange={(value) => setVal(value)}
{...rest}
/>
)
}