useDataset custom hook implemented

This commit is contained in:
NikolaBorislavovHristov 2019-10-11 14:44:22 +03:00
parent ed534b22b8
commit c5b2ee48cf
2 changed files with 17 additions and 0 deletions

View file

@ -16,6 +16,7 @@ const TextInput = require('./TextInput');
const routesRegexp = require('./routesRegexp');
const useAnimationFrame = require('./useAnimationFrame');
const useBinaryState = require('./useBinaryState');
const useDataset = require('./useDataset');
const useFullscreen = require('./useFullscreen');
const useLiveRef = require('./useLiveRef');
const useLocationHash = require('./useLocationHash');
@ -41,6 +42,7 @@ module.exports = {
routesRegexp,
useAnimationFrame,
useBinaryState,
useDataset,
useFullscreen,
useLiveRef,
useLocationHash,

15
src/common/useDataset.js Normal file
View file

@ -0,0 +1,15 @@
const React = require('react');
const useDataset = (props) => {
props = typeof props === 'object' && props !== null ? props : {};
const dataPropNames = Object.keys(props).filter(propsName => propsName.startsWith('data-'));
const dataset = React.useMemo(() => {
return dataPropNames.reduce((dataset, dataPropName) => {
dataset[dataPropName.slice(5)] = String(props[dataPropName]);
return dataset;
}, {});
}, [dataPropNames.join('')]);
return dataset;
};
module.exports = useDataset;