Я работаю над компонентом React, который запрашивает данные через выборку и получает в качестве ответа объект JSON, который состоит из значений, которые являются строками или массивами строк.
Я хочу отобразить каждый из ключей и значений в списке. Если значение является массивом, я хочу преобразовать его в строку, разделенную точками с запятой. Однако всякий раз, когда я пытаюсь преобразовать массив в строку с помощью метода .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: string
bar: baz; Фред
anotherfield: anotherstring
data
? Такжеdata
массив или объект? - person Henry Woody   schedule 07.01.2019data
, мы мало чем можем помочь. Я тестировалdata=[['foo', 'bar'], 'baz']
и получил ожидаемые результаты, поэтому нам нужно знать, как выглядит вашdata
. - person Carl Markham   schedule 07.01.2019Array.isArray
, чтобы проверить, является ли что-то массивом, а неtypeof === 'object'
- person Matthew Herbst   schedule 07.01.2019