将道具传递到现场验证会给出以前的道具值,在这种情况下尤其是数量。使用this sandbox,请按照以下步骤操作:
{"amount":4,"quantity":"2","value":"2"}
相反,应该发生什么:
我跟随this issue来处理传递的道具以验证功能,但是似乎只要道具改变,组件就不会更新,而是具有先前的值。
答案 0 :(得分:0)
尝试这个
validateAmount = (amount) => {
//const { value, quantity } = this.props.formValues
// instead for using values from props ,get values from current state
const { value, quantity } = store.getState().form.simple.values;
console.log('amount:', amount, 'value:', value, 'quantity:', quantity)
if (amount < value * quantity) return 'Nope!'
}
答案 1 :(得分:0)
这个对我有用。
用您的validateAmount
函数替换此代码。
validateAmount = (amount, e) => {
//const { value, quantity } = this.props.formValues
console.log('amount:', amount, 'value:', e.value, 'quantity:', e.quantity)
if (amount < e.value * e.quantity) return 'Nope!'
}
此处第二个参数获取表单值的当前状态。第一个答案是Redux State。