2017-12-20 22 views
2

の周りに渡される関数にパラメータを渡しますは、必要に応じて、私は、以下の機能を持っている

const { format, field } = column.props; 
if (format) { 
    return format(cell); 
} 
return cell; 

これはすべて正常に機能します。私は今、dateFormatter関数を変更して、オプションでパラメータを渡すことができます。これを行う方法がわかりません。参照先を次のように変更すると、

<TableColumn field="endDate" format={dateFormatter("MM/YY")}>End Date</TableColumn> 

というようになります。この形式は、自分の機能に日付として渡されます。

オプションでパラメータを渡して渡す関数にパラメータを渡すことはできますか?代わりに、書式設定を行う関数をエクスポートするの

答えて

1

機能させるという関数をエクスポート:

export function makeFormatter(format: string) { 
    return function(date: string) { 
    return moment(date).format(format || "MM/DD/YYYY"); 
    }; 
} 

あなたが機能を使用する場合は、あなたが希望してmakeFormatter()コールを挿入しますフォーマット(またはデフォルトを得るために何もない)。もちろん便宜のために、いくつかの異なるフォーマット関数を事前に作ることができます:

var formatters = { 
    mmddyyyy: makeFormatter("MM/DD/YYYY"), 
    euro: makeFormatter("DD/MM/YYYY"), 
    datetime: makeFormatter("MM/DD/YYYY hh:mm"), 
    // etc 
}; 

が次にあなたがそのフォーマッタを取得するためのコードで formatters.mmddyyyyを使用することができます。

+1

残忍を使用することになります。私は実際にあなたが提案した解決策を実装しましたが、デフォルトのインスタンスでは機能しませんでした。デフォルトの場合、私は 'format = {dateFormatter()} 'の代わりに' format = {dateFormatter} 'のように呼んでいました。 '()'を追加した後、これは動作します。ありがとう! – im1dermike

0

は、次のように関数を定義してください:

export function dateFormatter(format: string) { 
    return (date: string = "MM/DD/YYYY") => moment(date).format(format); 
} 

それは「MM/DD/YYYY」のデフォルト値は、日付を返す関数を返します。

だからあなたのコンポーネントは、このような

<TableColumn fromat={dateFormatter()}/> 

または

<TableColumn fromat={dateFormatter("MM/DD")}/> 
関連する問題