将 props 传递给 Field validate 会给出以前的 props 值

Passing props to Field validate gives previous props values

将 props 传递给 Field validate 会给出以前的 props 值,尤其是在本例中为 Quantity。使用 this sandbox,请按照下列步骤操作:

  1. 打开沙箱然后打开控制台
  2. 将值设置为 2
  3. Select数量为2
  4. 从控制台,数量仍设置为 1
  5. 按提交
  6. 弹出窗口具有正确的值{"amount":4,"quantity":"2","value":"2"}
  7. 将值更改为 1(现在控制台数量为 2)
  8. 出现错误信息

相反,应该发生什么:

我按照 this issue 来处理传递 props 以验证函数,但似乎每当 props 更改时组件都没有更新,而是具有以前的值。

试试这个

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!'
}

这个适合我。

用您的 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。