答えて

1

のようなものを実装する

normalize={maxlength_alphanumeric(5)} //but here two logic are burried in one function 

のような方法を見てReduxの形式の質問を通して

validate={[alphanumeric,maxlength]} 

正規化関数の配列

検証では、すべての関数が関連していない場合、検証に失敗した場合、検証に失敗したことに注意してください。

正規化では、各正規化関数に渡される値は、すでに正規化されていた以前の関数から渡される必要があります。

だから、私たちはあなたの再来の形で今normalizeAllを使用するには

function normalizeAll(normalizers){ 
    return function(value , previousValue , allValues , previousAllValues){ //note that these arguments are passed by default from redux form 
     var i = 0; 
     var normalizersLength = normalizers.length; 
     var currentValue = value; 
     while(i < normalizersLength) 
     { 
      var currentNormalizer = normalizers[i]; 
      if(typeof currentNormalizer == "function") 
      { 
       currentValue = currentNormalizer(currentValue ,previousValue , allValues , previousAllValues); 
      } 
      i++; 
     } 

     return currentValue; 
    } 
} 

//I am using only the `value` argument in normalization functions just for the example, but you can use the rest of them if they are needed 
var firstNormalization = function(value , previousValue , allValues , previousAllValues){ 
    return value+1; 
} 

var secondNormalization = function(value, previousValue , allValues , previousAllValues){ 
    return value+2; 
} 

var thirdNormalization = function(value, previousValue , allValues , previousAllValues){ 
    return value+3; 
} 

//To test result: i will execute the function returned from normalizeAll and pass the first argument as 1. 
var normalizedValue = normalizeAll([firstNormalization , secondNormalization , thirdNormalization])(1); 
console.log(normalizedValue); // 7 


の下normalizeAll機能を使用すると、あなたはこの

normalize={normalizeAll([firstNormalizationFunction , secondNormalizationFunction])} 


ような何かをすることを行うことができます

これはすべての正規化関数が同期であると仮定していると私は通常、正規化関数を非同期にする必要があるユースケースを持っているとは思っていませんが、ソリューションは同じですが、次にcallback関数promise

+0

ありがとうございました:私のために働いた:) –

+0

あなたは歓迎です。 –

関連する問題