У меня есть это:
const initialState = {
pages: [],
page: null,
loading: true,
error: {}
};
Тогда у меня есть это:
import {
GET_PAGES,
PAGE_ERROR,
DELETE_PAGE,
ADD_PAGE,
} from '../actions/types';
const initialState = {
pages: [],
page: null,
loading: true,
error: {}
};
export default function (state = initialState, action) {
const { type, payload } = action;
switch (type) {
case GET_PAGES:
return {
...state,
page: null,
pages: payload,
loading: false
};
case ADD_PAGE:
return {
...state,
pages: [payload, ...state.pages],
loading: false
};
case DELETE_PAGE:
return {
...state,
pages: state.pages.filter(page => page._id !== payload),
loading: false
};
case PAGE_ERROR:
return {
...state,
error: payload,
loading: false
};
default:
return state;
}
}
Каждый раз, когда я удаляю запись из моей базы данных, отображается сообщение об этом «state.pages».Фильтр не является функцией ».Я боролся с этим уже довольно давно.Любая помощь будет по достоинству оценена!Вот что я имею в своем компоненте:
const Pages = ({ getPosts, page: { pages, loading }, deletePost }) => {
useEffect(() => {
getPosts();
}, [getPosts]);
return (
<Fragment>
{loading ? (
<Spinner />
) : (
<section className="mb-3">
<div className="container-fluid">
<h1 className="border-bottom-dark pb-3 mb-3">Pages</h1>
{pages && pages.pageOfItems ? (
<div className="row">
<div className="col-lg-12">
<div className="table-responsive">
<table className="table table-bordered" id="dataTable" width="100%" cellSpacing="0">
<thead>
<tr>
<th></th>
<th>Actions</th>
</tr>
</thead>
<tbody>
{pages.pageOfItems.map(post => (
<tr key={post._id}>
<td></td>
<td className="btn-group">
<Link to={`/admin/pages/view/${post._id}`} className="btn btn-sm btn-dark"><i className="far fa-eye" /></Link>
<Link to={`/admin/pages/update/${post._id}`} className="btn btn-sm btn-warning"><i className="fas fa-edit" /></Link>
<button onClick={() => deletePost(post._id)} type="button" className="btn btn-danger btn-sm"><i className="fas fa-trash-alt" /></button>
</td>
</tr>
))}
</tbody>
</table>
</div>
</div>
</div>
) : (
<div className="nothingfound">
<div className="alert alert-danger">No pages found</div>
</div>
)}
</div>
</section>
)}
</Fragment>
)
};
Pages.propTypes = {
getPosts: propTypes.func.isRequired,
deletePost: propTypes.func.isRequired,
page: propTypes.object.isRequired,
};
const mapStateToProps = state => ({
page: state.page,
});
export default connect(
mapStateToProps,
{ getPosts, deletePost }
)(Pages);