Fix useNotices implementation
This commit is contained in:
committed by
Jack Kitterhing
parent
c921bc6f71
commit
9e5acecbc0
@@ -1,21 +1,24 @@
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
|
|
||||||
export default () => {
|
export default () => {
|
||||||
const [items, setItems] = React.useState([]);
|
const [state, setState] = React.useState({
|
||||||
const [nextId, setNextId] = React.useState(1);
|
items: [],
|
||||||
|
nextId: 1,
|
||||||
const getNextId = React.useCallback(() => {
|
});
|
||||||
setNextId((x) => x + 1);
|
|
||||||
return nextId;
|
|
||||||
}, [nextId]);
|
|
||||||
|
|
||||||
const add = React.useCallback((item) => {
|
const add = React.useCallback((item) => {
|
||||||
setItems((xs) => [...xs, { ...item, id: item.id || getNextId() }]);
|
setState(({ items, nextId }) => ({
|
||||||
}, [getNextId]);
|
items: [...items, { ...item, id: item.id || nextId }],
|
||||||
|
nextId: item.id ? nextId : nextId + 1,
|
||||||
|
}));
|
||||||
|
}, [setState]);
|
||||||
|
|
||||||
const remove = React.useCallback((id) => {
|
const remove = React.useCallback((id) => {
|
||||||
setItems((xs) => xs.filter((x) => x.id !== id));
|
setState(({ items, nextId }) => ({
|
||||||
}, []);
|
items: items.filter((x) => x.id !== id),
|
||||||
|
nextId,
|
||||||
|
}));
|
||||||
|
}, [setState]);
|
||||||
|
|
||||||
const success = React.useCallback(
|
const success = React.useCallback(
|
||||||
(content, props = {}) => add({ ...props, type: 'success', children: content }),
|
(content, props = {}) => add({ ...props, type: 'success', children: content }),
|
||||||
@@ -35,6 +38,6 @@ export default () => {
|
|||||||
);
|
);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
items, success, info, warning, error, remove,
|
items: state.items, success, info, warning, error, remove,
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
Reference in New Issue
Block a user