{"id":6612,"date":"2022-08-25T09:42:49","date_gmt":"2022-08-25T08:42:49","guid":{"rendered":"https:\/\/solidt.eu\/site\/?p=6612"},"modified":"2022-08-26T09:57:17","modified_gmt":"2022-08-26T08:57:17","slug":"typescript-react-refvalue","status":"publish","type":"post","link":"https:\/\/solidt.eu\/site\/typescript-react-refvalue\/","title":{"rendered":"Typescript \/ React: RefValue"},"content":{"rendered":"\n<div style=\"height: 250px; position:relative; margin-bottom: 50px;\" class=\"wp-block-simple-code-block-ace\"><pre class=\"wp-block-simple-code-block-ace\" style=\"position:absolute;top:0;right:0;bottom:0;left:0\" data-mode=\"typescript\" data-theme=\"monokai\" data-fontsize=\"14\" data-lines=\"Infinity\" data-showlines=\"true\" data-copy=\"false\">export interface IRefValue&lt;T> {\n    setValue: (value: T | undefined) => any;\n    getValue: () => T | undefined;\n}\n\nexport function RefValue&lt;T>(initVal?: T): IRefValue&lt;T> {\n    let internalValue = initVal;\n    const setValue = (value: T | undefined) => { internalValue = value; };\n    const getValue = () => internalValue;\n    return {\n        getValue,\n        setValue\n    };\n}\n\/\/ Description: \n\/\/ For the situations where a local variable \/ up-value does not work\n\/\/ Below an example how to use:\n\nconst labelCountRef = RefValue&lt;number>(1);\nconst printerIdRef = RefValue&lt;number>(0);\nconst printerChanged = (x?: number) => printerIdRef.setValue(x);\n\nconst ignoreWarningsAndPrintAgain = await appDomain.IRequestNotify.notify({\n    showConfirmButton: true,\n    showCancelButton: true,\n    html: &lt;div>\n        &lt;PrinterSelector printerChanged={printerChanged} \/>\n        &lt;NumbericInput length={4} value={String(labelCountRef.getValue())} onSetValue={(v: string) => labelCountRef.setValue(parseInt(v) || 0)} \/>\n    &lt;\/div>,\n    cancelButtonText: translate(\"general.cancel\"),\n    confirmButtonText: translate(\"general.continue\")\n});\n\nif (!ignoreWarningsAndPrintAgain.isConfirmed) {\n    return { cancelled: true };\n}\nreturn {\n    printerId: printerIdRef.getValue(),\n    labelCount: labelCountRef.getValue()\n};\n\n\n<\/pre><\/div>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"footnotes":""},"categories":[1],"tags":[],"class_list":["post-6612","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/posts\/6612","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/comments?post=6612"}],"version-history":[{"count":2,"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/posts\/6612\/revisions"}],"predecessor-version":[{"id":6622,"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/posts\/6612\/revisions\/6622"}],"wp:attachment":[{"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/media?parent=6612"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/categories?post=6612"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/tags?post=6612"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}