The communications platform that puts data protection first.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
Rocket.Chat/client/hooks/useReactiveValue.js

25 lines
470 B

import { useEffect, useState } from 'react';
import { useTracker } from './useTracker';
export const useReactiveValue = (getValue, deps = []) => {
const Tracker = useTracker();
const [value, setValue] = useState(getValue);
useEffect(() => {
if (!Tracker) {
return;
}
const computation = Tracker.autorun(() => {
const newValue = getValue();
setValue(() => newValue);
});
return () => {
computation.stop();
};
}, deps);
return value;
};