我正在更新帖子,然后单击更新时出现此错误
TypeError:无法读取未定义的属性“ map”。
这是我的减速机,有效载荷是
// Assuming "?post=1234&action=edit"
var urlParams = new URLSearchParams(window.location.search);
console.log(urlParams.has('post')); // true
console.log(urlParams.get('action')); // "edit"
console.log(urlParams.getAll('action')); // ["edit"]
console.log(urlParams.toString()); // "?post=1234&action=edit"
console.log(urlParams.append('active', '1')); // "?post=1234&action=edit&active=1"
这是我的post组件渲染
action.payload: {id: 1, title: "test", body: "update"}
case UPDATE_POST:
const updatedItems = state.items.map(item => {
if(item.id === action.payload.id){
return { ...item, ...action.payload }
}
return item
})
return updatedItems
答案 0 :(得分:0)
您正在使用state.items
访问数组,这意味着数组是对象的一部分,键是项。因此,最后您需要返回一个带有更新项的对象,但是您将从reducer返回一个数组。
这样写:
case UPDATE_POST:
const updatedItems = state.items.map(item => {
if(item.id === action.payload.id){
return { ...item, ...action.payload }
}
return item
})
return {...state, items: updatedItems }
答案 1 :(得分:0)
首先在Props中检查数据是否到来,然后使用它。并使用渲染中的控制台对其进行调试,以检查数据是否到来。如果有数据,那应该可以。如果仍然遇到问题,请告诉我 您的问题与此question
相似this.props.posts ?
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.editPost(post)}
className="btn btn-primary">
Edit
</button>
<button
onClick={() =>this.deletePost(post.id)}
className="btn btn-danger">
Delete
</button>
</div>
</div>
))
: null