From 9258e04379f6dc9cc6bf3e5c862dabc040b8c1ea Mon Sep 17 00:00:00 2001 From: NikolaBorislavovHristov Date: Wed, 25 Sep 2019 15:42:54 +0300 Subject: [PATCH] useSpreadState custom hook implemented --- src/common/index.js | 2 ++ src/common/useSpreadState.js | 11 +++++++++++ 2 files changed, 13 insertions(+) create mode 100644 src/common/useSpreadState.js diff --git a/src/common/index.js b/src/common/index.js index 580b6db4a..e6cd1cd23 100644 --- a/src/common/index.js +++ b/src/common/index.js @@ -19,6 +19,7 @@ const useBinaryState = require('./useBinaryState'); const useFullscreen = require('./useFullscreen'); const useLocationHash = require('./useLocationHash'); const useRouteActive = require('./useRouteActive'); +const useSpreadState = require('./useSpreadState'); const useTabIndex = require('./useTabIndex'); module.exports = { @@ -43,5 +44,6 @@ module.exports = { useFullscreen, useLocationHash, useRouteActive, + useSpreadState, useTabIndex }; diff --git a/src/common/useSpreadState.js b/src/common/useSpreadState.js new file mode 100644 index 000000000..70455087e --- /dev/null +++ b/src/common/useSpreadState.js @@ -0,0 +1,11 @@ +const React = require('react'); + +const useSpreadState = (initialState) => { + const [state, setState] = React.useReducer( + (state, nextState) => ({ ...state, ...nextState }), + initialState + ); + return [state, setState]; +}; + +module.exports = useSpreadState;