@schema-render/core-react
Version:
Through a set of simple JSON Schema, efficiently build a set of forms.
35 lines (34 loc) • 1.08 kB
JavaScript
import { useEffect, useState } from "react";
import { generateUID } from "../utils/base";
import useLatest from "./useLatest";
const DEV_TOOL_KEY = '__schema_render_tool__';
export default function useDevTool({ valueRef, props }) {
const [uid] = useState(()=>generateUID());
const propsRef = useLatest(props);
useEffect(()=>{
if (!window[DEV_TOOL_KEY]) {
window[DEV_TOOL_KEY] = {};
}
if (!window[DEV_TOOL_KEY][uid]) {
window[DEV_TOOL_KEY][uid] = {};
}
Object.assign(window[DEV_TOOL_KEY][uid], {
exportProps: ()=>propsRef.current,
exportSchema: ()=>{
var _propsRef_current;
return (_propsRef_current = propsRef.current) === null || _propsRef_current === void 0 ? void 0 : _propsRef_current.schema;
},
exportValue: ()=>valueRef.current
});
return ()=>{
delete window[DEV_TOOL_KEY][uid];
};
}, [
uid,
propsRef,
valueRef
]);
return {
uid
};
}