Отправка Redux не удаляет элемент из массива

Пытаюсь удалить элемент из массива, регистратор redux показывает, что все прошло хорошо.

Отправка Redux не удаляет элемент из массива

Однако он по-прежнему отображается в упорядоченном списке после того, как я нажму x.

Отправка Redux не удаляет элемент из массива

Редуктор / posts.js

    case 'REMOVE_POST': {
      return Object.assign({}, state, {
        posts: [...state.posts.filter(post=> post.id !== action.id)],
      });

      }

      default:
        return state
  }

компоненты / TodoList.js

import React from 'react';
import {connect} from 'react-redux';
import { deletePost } from '../actions'

const PostList = ({posts, deletePost}) => (
  <ul className = "list-group">
    {posts.map(post=>
      <li
       className = "list-group-item" key = {post.id} {...post}>  {post.text}
       <button type = "submit" onClick = {()=> deletePost(post.id)} className  = " btn btn-small-primary"> X </button>
      </li>

    )}

  </ul>


);

const mapStateToProps = (state) => {
  return { posts: state.posts };
};

const mapDispatchToProps = dispatch => ({
  deletePost: id => dispatch(deletePost(id))
})


export default connect(mapStateToProps, mapDispatchToProps)(PostList);

Обновлено.

Отправка Redux не удаляет элемент из массива

**ADD_POST reducer**

case 'ADD_POST':
  return [
    ...state,
    {
      id:action.id,
      text:action.text,
    }

  ]

Можете дать ссылку на демо?

Anand Undavia 22.11.2018 07:53

Или хотя бы показать содержимое массива

Daniel Hilgarth 22.11.2018 07:53

я его обновил. возможно, это дает понимание.

BARNOWL 22.11.2018 08:01
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
3
478
2

Ответы 2

Что ж, у вас есть небольшая ошибка в вашем коде

Вы отправили действие DELETE_POST, тогда как вы ожидаете REMOVE_POST в своем коде.

case 'DELETE_POST': {
      return Object.assign({}, state, {
        posts: [...state.posts.filter(post=> post.id !== action.id)],
      });

      }

      default:
        return state

Это должен быть case 'ADD_POST': return { ...state, posts: [...state.posts, { id:action.id, text:action.text, } ] }

Shubham Khatri 22.11.2018 08:12

проверьте мой комментарий выше, вы ADD_POST тоже не правильно

Shubham Khatri 22.11.2018 08:13

Это может быть из-за других ошибок в вашем коде, ваше состояние - это объект, а сообщение - это ключ к нему, это то, что кажется из вашего кода DELETE_POST, если это не так, DELETE_POST необходимо изменить. В любом случае, я хотел бы знать, каково начальное состояние вашего редуктора

Shubham Khatri 22.11.2018 08:15

Можно ли обновить код, у меня проблемы с пониманием встроенного кода.

BARNOWL 22.11.2018 08:18

Конечно, обновите свой код редуктора с помощью ADD_POST и REMOVE_POST вместе с начальным состоянием, и я обновлю свой ответ в соответствии с этим

Shubham Khatri 22.11.2018 08:27

Это сработало для меня, спасибо вам, ребята, за ваш вклад.

  switch(action.type){
    case 'ADD_POST':
      return [
        ...state,
        {
          id:action.id,
          text:action.text,
        }

      ]

    case 'DELETE_POST':
      return state.filter(({ id }) => id !== action.id);

    default:
      return state
  }

}

Другие вопросы по теме