如何在React中使用不同变量类型在获取请求中加入数组?

时间:2019-01-07 19:55:18

标签: reactjs fetch-api

我正在研究一个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

1 个答案:

答案 0 :(得分:0)

问题在于,从数据返回的某些值为null,对于typeof ==='object'返回了'true'。因此,我需要改用Array.isArray(data [f])。