Reactjs React-Redux:无法读取属性';地图';删除项目时的未定义状态
单击“删除”按钮后,我出现了一个错误: 无法读取未定义的属性“map” 我是React Redux JS的新手 请参阅下面我的组件减速器和操作代码: Post.jsReactjs 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
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 ]
};
}