Why do you have to use current everywhere? You can do const { current: myStableValue } = useRef(computation);
Not sure what you mean by one time constructor function, but you can pass the result of a function to initial value.
const { current: myStableValue } = useRef((() => { //called once })());