如何呈现类型为对象数组的 React Hook 状态?
How to render a React Hook State whose type is an Array of Objects?
我正在尝试呈现存储在 React Hook 状态中的对象数组,该状态存储电话簿的名称和号码:
const App = () => {
const [ persons, setPersons] = useState([
{ name: 'Arto Hellas', number: '000-000-0000' },
{ name: 'Ada Lovelace', number: '39-44-5323523' },
{ name: 'Dan Abramov', number: '12-43-234345' },
{ name: 'Mary Poppendieck', number: '39-23-6423122' }
]);
return (
<div>
<h2>Phonebook</h2>
<div>{persons}</div>
</div>
)
}
但是我收到以下错误:
Objects are not valid as a React child (found: object with keys {name, number}). If you meant to render a collection of children, use an array instead.
我试过以下方法:
我想通过为数组的每个索引创建 <div>
,我可以单独渲染每个索引,而不是一次渲染整个数组,但这似乎不是问题。
const App = () => {
const [ persons, setPersons] = useState([
{ name: 'Arto Hellas', number: '000-000-0000' },
{ name: 'Ada Lovelace', number: '39-44-5323523' },
{ name: 'Dan Abramov', number: '12-43-234345' },
{ name: 'Mary Poppendieck', number: '39-23-6423122' }
]);
return (
<div>
<h2>Phonebook</h2>
<div>{persons.map(person => <div> {person} </div>)}</div>
</div>
)
}
但是当我尝试这样做时,我收到了相同的错误消息。
如何渲染状态中的对象?
您仍在尝试渲染 object
。您需要访问它的 properties
const App = () => {
const [ persons, setPersons] = useState([
{ name: 'Arto Hellas', number: '000-000-0000' },
{ name: 'Ada Lovelace', number: '39-44-5323523' },
{ name: 'Dan Abramov', number: '12-43-234345' },
{ name: 'Mary Poppendieck', number: '39-23-6423122' }
]);
return (
<div>
<h2>Phonebook</h2>
<div>{persons.map(person => <div key={person.name}> {person.name} </div>)}</div>
</div>
)
}
对象没有默认渲染器。您可以呈现对象的 JSON 序列化,例如 <div>{JSON.stringify(persons)}</div>
。但这很可能不是你想做的。
虽然上面的答案显示了如何展开和呈现嵌套对象,但您可能希望最终设置嵌套字段并操纵状态并高效地完成它。查看 Hookstate, it is supercharged useState hook which simplifies and speeds up management of complex / nested states. For example here is the similar demo。 (免责声明:我是该项目的作者)
我正在尝试呈现存储在 React Hook 状态中的对象数组,该状态存储电话簿的名称和号码:
const App = () => {
const [ persons, setPersons] = useState([
{ name: 'Arto Hellas', number: '000-000-0000' },
{ name: 'Ada Lovelace', number: '39-44-5323523' },
{ name: 'Dan Abramov', number: '12-43-234345' },
{ name: 'Mary Poppendieck', number: '39-23-6423122' }
]);
return (
<div>
<h2>Phonebook</h2>
<div>{persons}</div>
</div>
)
}
但是我收到以下错误:
Objects are not valid as a React child (found: object with keys {name, number}). If you meant to render a collection of children, use an array instead.
我试过以下方法:
我想通过为数组的每个索引创建 <div>
,我可以单独渲染每个索引,而不是一次渲染整个数组,但这似乎不是问题。
const App = () => {
const [ persons, setPersons] = useState([
{ name: 'Arto Hellas', number: '000-000-0000' },
{ name: 'Ada Lovelace', number: '39-44-5323523' },
{ name: 'Dan Abramov', number: '12-43-234345' },
{ name: 'Mary Poppendieck', number: '39-23-6423122' }
]);
return (
<div>
<h2>Phonebook</h2>
<div>{persons.map(person => <div> {person} </div>)}</div>
</div>
)
}
但是当我尝试这样做时,我收到了相同的错误消息。
如何渲染状态中的对象?
您仍在尝试渲染 object
。您需要访问它的 properties
const App = () => {
const [ persons, setPersons] = useState([
{ name: 'Arto Hellas', number: '000-000-0000' },
{ name: 'Ada Lovelace', number: '39-44-5323523' },
{ name: 'Dan Abramov', number: '12-43-234345' },
{ name: 'Mary Poppendieck', number: '39-23-6423122' }
]);
return (
<div>
<h2>Phonebook</h2>
<div>{persons.map(person => <div key={person.name}> {person.name} </div>)}</div>
</div>
)
}
对象没有默认渲染器。您可以呈现对象的 JSON 序列化,例如 <div>{JSON.stringify(persons)}</div>
。但这很可能不是你想做的。
虽然上面的答案显示了如何展开和呈现嵌套对象,但您可能希望最终设置嵌套字段并操纵状态并高效地完成它。查看 Hookstate, it is supercharged useState hook which simplifies and speeds up management of complex / nested states. For example here is the similar demo。 (免责声明:我是该项目的作者)