export interface IRefValue<T> {
setValue: (value: T | undefined) => any;
getValue: () => T | undefined;
}
export function RefValue<T>(initVal?: T): IRefValue<T> {
let internalValue = initVal;
const setValue = (value: T | undefined) => { internalValue = value; };
const getValue = () => internalValue;
return {
getValue,
setValue
};
}
// Description:
// For the situations where a local variable / up-value does not work
// Below an example how to use:
const labelCountRef = RefValue<number>(1);
const printerIdRef = RefValue<number>(0);
const printerChanged = (x?: number) => printerIdRef.setValue(x);
const ignoreWarningsAndPrintAgain = await appDomain.IRequestNotify.notify({
showConfirmButton: true,
showCancelButton: true,
html: <div>
<PrinterSelector printerChanged={printerChanged} />
<NumbericInput length={4} value={String(labelCountRef.getValue())} onSetValue={(v: string) => labelCountRef.setValue(parseInt(v) || 0)} />
</div>,
cancelButtonText: translate("general.cancel"),
confirmButtonText: translate("general.continue")
});
if (!ignoreWarningsAndPrintAgain.isConfirmed) {
return { cancelled: true };
}
return {
printerId: printerIdRef.getValue(),
labelCount: labelCountRef.getValue()
};
661200cookie-checkTypescript / React: RefValue