良いやり方かどうかはさておき、手順をメモしておく
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]).itemwindow.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"])