Reactjs React-Redux:无法读取属性';地图';删除项目时的未定义状态

Reactjs React-Redux:无法读取属性';地图';删除项目时的未定义状态,reactjs,redux,react-redux,Reactjs,Redux,React Redux,单击“删除”按钮后,我出现了一个错误: 无法读取未定义的属性“map” 我是React Redux JS的新手 请参阅下面我的组件减速器和操作代码: Post.js class Post extends Component { constructor(){ super(); this.deletePost = this.deletePost.bind(this); } deletePost(postId){ this.props.deletePost(pos

单击“删除”按钮后,我出现了一个错误:

无法读取未定义的属性“map”

我是React Redux JS的新手

请参阅下面我的组件减速器和操作代码:

Post.js

class Post extends Component {
  constructor(){
    super();
    this.deletePost = this.deletePost.bind(this);
  }

  deletePost(postId){
    this.props.deletePost(postId);
  }

  render(){
    const postItems = this.props.posts.map(post => (
        <div key={post.id} className="row">
            <div className="container">
                <h3>{post.title}</h3>
                <p>{post.body}</p>
                <button
                    onClick={() =>this.deletePost(post.id)}
                    className="btn btn-danger">
                    Delete
                </button>
            </div>
        </div>  
    ))

    const divStyle = {
        padding: '15px',
    }

    return (
        <div style={divStyle}>
            <PostForm />
            <hr/>
            {postItems}
        </div>
    )
  }
}
const mapStateToProps = state => ({
    posts: state.posts.items,
    newPost: state.posts.item
}) 

export default connect(mapStateToProps, { fetchPosts, deletePost })(Post);
PostReducer.js(这是我的reducer。)

是的,只要更换

return filteredItems; to  return { items: filteredItems }

但是请你检查一下我的代码是否正确。谢谢

代码看起来不错。在component render函数中,您可以做的只是检查是否有POST,如果没有显示正在加载的组件。比如(!Object.keys(posts.length){return()}。除此之外,一切都很好:)
case DELETE_POST:{
 const { items } = state;
 const filteredItems = items.filter(items => {
      return items.id != action.payload;
 });

 return { 
    ...state,
    items: [ ...filteredItems ]
 };

}
return filteredItems; to  return { items: filteredItems }
case DELETE_POST:{
 const { items } = state;
 const filteredItems = items.filter(items => {
      return items.id != action.payload;
 });

 return { 
    ...state,
    items: [ ...filteredItems ]
 };

}