我正在研究一个React组件,该组件通过获取请求数据并获得一个JSON对象作为响应,该JSON对象由字符串或字符串数组的值组成。
我想呈现列表中的每个键和值。如果值是数组,我想将其转换为以分号分隔的字符串。但是,每当我在映射过程中尝试通过.join()方法将数组转换为字符串时,映射的元素就永远不会呈现。如果我从映射中删除.join()方法,则常量可以很好地呈现。
为什么在映射从访存返回的数据的过程中不能使用.join()方法?还是我做错了其他事?我没有在控制台中看到任何会指出语法问题的错误。
这似乎也适用于映射功能内的映射(与使用join相反)。
class Record extends Component {
constructor(props) {
super(props)
this.state = {
data: []
}
}
componentDidMount() {
fetch('http://127.0.0.1:9200/_index/_doc/1')
.then(res => res.json())
.then(json => this.setState({data: json._source}))
}
render() {
const data = this.state.data
const record = Object.keys(data).map((f, i) => {
return <li key={i}>{f} : {typeof data[f] === 'object' ? data[f].join('; ') : data[f]}</li>
})
return (
<ul>
{record}
</ul>
)
}
}
编辑:数据响应的示例是:
{“ foo”:“字符串”,“ bar”:[“ baz”,“ fred”],“ anotherfield”:“ anotherstring”}
理想情况下应显示为:
foo:字符串
酒吧:baz;弗雷德
anotherfield:anotherstring
答案 0 :(得分:0)
问题在于,从数据返回的某些值为null,对于typeof ==='object'返回了'true'。因此,我需要改用Array.isArray(data [f])。