Ich bin etwas neu zu funktionaler Programmierung. Hier ist mein aktuelles Paradigma aus meiner React App. Ich habe eine generische Komponente, in die ich eine Funktion übergebe, die optional ein placeholder
Argument nehmen kann.Wie man Daten in eine Funktion currying konditional übergibt
<TableColumn field="effectiveDate" format={dateFormatter} sortable>Start Date</TableColumn>
<TableColumn field="endDate" format={dateFormatter("No End Date")} sortable>End Date</TableColumn>
Ich glaube, ich muss currying verwenden, um mein Ziel zu erreichen (mit dem ich kurz sprechen werde). Wenn das der Fall, habe ich dateFormatter
wie folgt definiert:
export function dateFormatter(placeholder?: string) {
return function (date: string) {
const attributes: any = { value: date };
if (placeholder) {
attributes.placeholder = placeholder;
}
return <ShortDate {...attributes} />;
};
}
Dann, als ich meinen Tisch tatsächlich machen, ich Schleife durch jeden Datensatz und den Wert wie diese:
getRecordValue(record: any, column: React.ReactElement<TableColumnProps>) {
const { format, field } = column.props;
const cell = field ? record[field] : "";
if (format) {
return format()(cell, record);
}
return cell;
}
Ich mag eine einzige dateFormatter
-Funktion zu haben, aber in der Lage sein, optional eine placeholder
zu übergeben und die Ausführung zu verzögern. Wie kann ich das machen?
Warum Currying und nicht nur ES6-Standardwerte verwenden? –
@GerardvanHelden Ich möchte nur Platzhalter verwenden, wenn es angegeben ist. – im1dermike
' ' und innerhalb 'getRecordValue'' ... if (format) {return format (cell); } ... 'Das Curren wird ausgeführt, wenn die ' gerendert wird. Dann hat 'getRecordValue' Zugriff auf den optional erfassten' Platzhalter'. –
arpl