jos*_*phT 5 javascript reactjs redux redux-saga
我有一个项目,我使用 redux-saga 使用 axios 进行 API 调用并将数据返回到商店,然后我使用 redux mapStateToProps,现在我想 map() 它并将其显示在我的 DOM 上,但是我我得到“未定义”。
有两件事不断发生:
当我 console.log(blogs) 我看到我的博客数组所以我不确定我做错了什么。是不是因为 blogs 是一个数组,所以我需要做某种 for 循环来遍历每个项目然后映射它?
这是我的主要代码块和控制台日志
import React, {Component} from 'react';
import {connect} from 'react-redux'
import {loadBlogs} from '../../store/actions/blogActions'
class Bloglist extends Component {
componentDidMount() {
this.props.loadBlogs();
}
render() {
const {blogs} = this.props
console.log(blogs)
return (
<div>
<h1>{blogs.map(blog => (
<span>{blog.id}</span>
))}</h1>
</div>
)
}
}
const mapStateToProps = blogs => ({
blogs
})
const mapDispatchToProps = dispatch => ({
loadBlogs: () => dispatch(loadBlogs()),
})
export default connect(mapStateToProps, mapDispatchToProps)(Bloglist)
Run Code Online (Sandbox Code Playgroud)
这是一个控制台日志示例和一个错误:
Uncaught TypeError: blogs.map is not a function
Run Code Online (Sandbox Code Playgroud)
这是当我刚刚注释掉 map() 行并返回一个“hello”时,这个 console.log 向我显示数据正在返回
Bloglist.js:14 (3) [{…}, {…}, {…}]
Run Code Online (Sandbox Code Playgroud)
如果您需要更多样品或信息,请告诉我。完成这项工作非常重要,因此我们将不胜感激!谢谢!
小智 4
可能有 2 个问题。
请交叉检查博客的类型,它应该是数组,因为map方法仅适用于数组。
在映射数组之前,您必须检查数组的长度。由于映射方法不适用于空数组。
试试这个代码——
<div>
<h1>{blogs && blogs.length > 0 ? blogs.map(blog => (
<span>{blog.id}</span>
)) : null}</h1>
</div>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
576 次 |
| 最近记录: |