Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 使用钩子和useState访问数组_Arrays_Reactjs_React Hooks_Jsx - Fatal编程技术网

Arrays 使用钩子和useState访问数组

Arrays 使用钩子和useState访问数组,arrays,reactjs,react-hooks,jsx,Arrays,Reactjs,React Hooks,Jsx,我的代码如下: const [personsState, setPersonsState] = useState({ person: [ { name: 'Max', age: 28 }, { name: 'Manu', age: 29 }, { name: 'Stephanie', age: 26 } ], showPersons: false }); 使用下面的代码访问person数组是否是最佳做法 persons = ( <div>

我的代码如下:

const [personsState, setPersonsState] = useState({
  person: [
    { name: 'Max', age: 28 },
    { name: 'Manu', age: 29 },
    { name: 'Stephanie', age: 26 }
  ],
  showPersons: false
});
使用下面的代码访问person数组是否是最佳做法

persons = (
  <div>
    {personsState.person.map((person) => {
      return <Person name={person.name} age={person.age} />;
    })}
  </div>
);
人员=(
{personstate.person.map((person)=>{
返回;
})}
);

如果使用钩子,React建议将不同类型的状态分离到不同的变量中。与类组件不同,您不应该尝试将所有状态放入单个变量中

发件人:

我们建议将状态拆分为多个状态变量,并根据这些变量的值一起变化

考虑使用
persons
(数组)和
showPersons
(布尔值)代替:


然后通过映射
persons
变量而不是
personstate.prson

生成JSX。我觉得您的代码很不错,只有一个额外的建议与React文档部分相关:

键有助于识别哪些项已更改、已添加或已删除。应为数组中的元素提供键,以使元素具有稳定的标识

为了消除警告,您需要向
.map()
中的每个迭代元素添加
key
,如下所示:

<div>
    {personsState.person.map((person, index) => {
      return <Person key={index} name={person.name} age={person.age} />;
    })}
</div>

{personstate.person.map((person,index)=>{
返回;
})}
<div>
    {personsState.person.map((person, index) => {
      return <Person key={index} name={person.name} age={person.age} />;
    })}
</div>