Вот упрощенный код:
-action. js
export const removeVisitedUser = id => async dispatch => {
try {
const visited = JSON.parse(localStorage.getItem(`visited_`)) || [];
const filtered = visited.filter(i => i !== id);
debugger
dispatch({type: REMOVE_VISITED_USER, payload: {filtered}})
} catch (err) {
dispatch({ type: ERROR_REMOVE_VISITED_USER }, err)
}
}
export const errorRemoveVisitedUser = () => ({
type: ERROR_REMOVE_VISITED_USER
});
-reducer. js
import { REMOVE_VISITED_USER } from "./action";
const initialState = {
visited: JSON.parse(localStorage.getItem(`visited_`)) || [],
};
export default (state = initialState, action) => {
const { visited } = state;
const { type, payload } = action;
switch (type) {
case REMOVE_VISITED_USER: {
return { ...state, visited: payload.filtered};
};
-reactComponent. js
const reactComponent= ({
visited: { visited},
removeVisitedUser,
}) => {
return (
<div className="visited-list">
<div className="visited-list__items">
<MyLogo />
{visited.map((i, ind) => (
<div
key={ind}
onClick={() => removeVisitedUser(i._id)}
className={`visited-list__item ${active(ind)}`}
>
{!i.img
? <i className="fa fa-user-circle" />
: <div style={{ backgroundImage: `url(${avatarGetter(i.img)})` }} />}
</div>
))}
</div>
</div>
);
};
Вы можете увидеть отладчик при удалении действия, так как я знаю, что он должен запускаться, когда я нажимаю на любой посещенный пользовательский div, но этого не произошло, поэтому действие тоже не сработало.
Я трачу много времени, чтобы понять, как это должно работать правильно, но так и не понял.
Спасибо.