オブジェクトを露出させる方法に関する考察
2021-06-28 現在 この方法は採用していない[ReactNを露出する]2019-12-10from [TypeScriptで対話的に実装]オブジェクトを露出させる方法に関する考察
const App = (props: any) =>
の中で let [selection, setSelection] = useState<PaperItem[]>([]);
window.debug.selection = selection;
で露出させる const stateItemToFirestore = (x: StateItem) =>
window.debug.stateItemToFirestore = stateItemToFirestore
... export stateItemToFirestore
する window.debug.stateItemToFirestore(window.debug.selection)
window.debug.stateItemToFirestore(window.debug.selection[0])
window.debug.stateItemToFirestore(window.debug.selection[0]).item
window.debug:any
に入れた時点で型情報は失われている JSON.stringify(...)
updateStateItem
がexportされているのでそれを露出する firestoreToStateItem
が必要export const exportSelectedItemsAsJSON = () => {
const r = selectedItems.map((x) =>
stateItemToFirestore(x.item)
);
return JSON.stringify(r);
};
export const importItemsFromJSON = (json: string) => {
const xs = JSON.parse(json);
xs.forEach((x: object) => {
updateStateItem(null, firestoreToStateItem(x))
})
};
debug.importItemsFromJSON(debug.exportSelectedItemsAsJSON())
debug.exportSelectedItemsAsJSON()
でコンソールに表示されたJSONをコピペしても壊れてしまう localStorage["tmp"] = debug.exportSelectedItemsAsJSON()
debug.importItemsFromJSON(localStorage["tmp"])