2017-09-17 38 views
0

我需要對redux表單字段進行同步字段驗證。它的一個參數(最小值)在redux存儲中。我怎樣才能基於一個參數與redux形式同步字段驗證?

如何將一個參數傳遞給字段驗證器函數?甚至是表單的同步驗證器功能。

據我瞭解我有兩個選項來設置現場驗證:

  1. 傳遞一個驗證功能reduxForm()

如果我有這條路線走我怎麼能訪問表單驗證功能中的道具? 即使我將驗證函數綁定到窗體上,也無法看到窗體的道具。

App = reduxForm({ 
    form: "MyForm", 
    validate: validate.bind(App) 
})(App); 

我無法將MyForm.Validate函數傳遞給reduxForm。

  • 設置使用關於字段組件
  • 此路線的驗證丙我將通過支柱作爲參數來驗證功能一個validate功能。 也就是說。 <Field validate={minValue(this.props.minValue)} /> But in this comment據說這不是一個好方法,因爲它會在每個表單渲染上創建一個新函數。事實上,它無法正常工作 - 直到發生其他字段的驗證錯誤時才進行驗證。

    My attempts on codepen

    回答

    0

    我已經找到了解決辦法。

    constructor(props) { 
        super(props); 
        this.minAmount = Validations.minAmount(
         this.props.minAmount 
        ); // this a a workaround for validations with parameters causing issues , see https://github.com/erikras/redux-form/issues/2453#issuecomment-272483784 
    } 
    

    然後在字段::

    <Field 
        validate={this.minAmount} 
        .... 
    

    const Validations = { 
        minAmount: minValue => value => { 
        return parseFloat(value) < minValue 
         ? "Amount must be at least " + minValue 
         : undefined; 
        } 
    }; 
    
    在部件的構造

    相關問題