Javascript-从JSON到对象的数组
我有下面的react类Javascript-从JSON到对象的数组,javascript,json,reactjs,Javascript,Json,Reactjs,我有下面的react类PeopleSelector,我想从我的people.json中获取一个people数组 // @flow import React from 'react' type Props = { currentPeople: string, setPeopleFn: (string) => void } class PeopleSelector extends React.Component { render() { let peoples = r
PeopleSelector
,我想从我的people.json中获取一个people数组
// @flow
import React from 'react'
type Props = {
currentPeople: string,
setPeopleFn: (string) => void
}
class PeopleSelector extends React.Component {
render() {
let peoples = require('../data/people.json');
return <select value={this.props.currentPeople} onChange={e => this.props.setPeopleFn(e.target.value)}>
<style jsx>{`
select {
font-size: 20px;
line-height: 20px;
margin-bottom: 20px;
min-width: 300px;
}
`}</style>
{peoples.map(name => (
<option key={name}>
{name}
</option>
))}
</select>
}
}
export default PeopleSelector
不可能将JSON呈现为People的对象吗
使用
peoples.peoples.map
会导致以下错误:
Objects are not valid as a React child (found: object with keys
{focusedTrackId, milestoneByTrack, name, title}). If you meant to
render a collection of children, use an array instead.
您的
peoples
对象中有另一个peoples
属性
因此,不要使用peoples.map(…)
,而是使用peoples.peoples.map(…)
此外,您在映射
循环中错误地渲染每个名称
:
{peoples.peoples.map(people => (
<option key={people.name}>
{people.name}
</option>
))}
{people.people.map(people=>(
{people.name}
))}
option key={people.name}
我会使用某种类型的
id
或唯一标识符 您的peoples
对象中有另一个peoples
属性
因此,不要使用peoples.map(…)
,而是使用peoples.peoples.map(…)
此外,您在映射
循环中错误地渲染每个名称
:
{peoples.peoples.map(people => (
<option key={people.name}>
{people.name}
</option>
))}
{people.people.map(people=>(
{people.name}
))}
option key={people.name}
我会使用某种类型的
id
或唯一标识符 我认为您打算做peoples.peoples.map(name=>{})
当您需要json文件时,您将其作为根对象导入。然后,peoples数组将作为.peoples导入。i、 e peoples.peoples.map() 我认为您打算做peoples.peoples.map(name=>{}) 当您需要json文件时,您将其作为根对象导入。然后,peoples数组将作为.peoples导入。i、 e peoples.peoples.map() 您可以像这样清晰地提取(解构)您真正需要的零件:
let{people}=require('../data/people.json');
您可以像这样清晰地提取(解构)您真正需要的部件:
let{people}=require('../data/people.json');
然后我得到:对象作为React子对象无效(找到:具有键{focusedTrackId,milestoneByTrack,name,title}的对象)。如果要呈现子对象集合,请改用数组。
然后我得到:对象作为React子对象无效(找到:具有键{focusedTrackId,milestoneByTrack,name,title}的对象)。如果要呈现子对象集合,请改用数组。
然后我得到:对象作为React子对象无效(找到:具有键{focusedTrackId,milestoneByTrack,name,title}的对象)。如果要呈现子对象集合,请使用数组。
:-(@DanielBocksteger-answer-updated。请再次检查:)您还可以告诉我如何在选择控件中返回人员对象,其中我当前只返回名称吗?@DanielBocksteger您无法返回人员对象。浏览器无法理解,将显示类似于[Object]
的内容。然后我得到:对象作为React子对象无效(找到:具有键{focusedTrackId,milestoneByTrack,name,title}的对象)。如果要呈现子对象集合,请使用数组。
:-(@DanielBocksteger-answer-updated。请再次检查:)您还可以告诉我如何在选择控件中返回人员对象,其中我当前只返回名称吗?@DanielBocksteger您无法返回人员对象。浏览器无法理解,将显示类似于[Object]
的内容。使用peoples.peoples.map
会导致对象作为React子对象无效(找到:具有键{focusedTrackId,milestoneByTrack,name,title}的对象)。如果要呈现子对象集合,请改用数组。
使用peoples.peoples.map
会导致对象作为React子对象无效(找到:具有键{focusedTrackId,milestoneByTrack,name,title}的对象)。如果要呈现子对象集合,请改用数组。