Reactjs 反应钩。无法读取属性';地图';嵌套列表的类型

Reactjs 反应钩。无法读取属性';地图';嵌套列表的类型,reactjs,react-hooks,Reactjs,React Hooks,我在CreateReact应用程序中有一个页面,用于读取postgres查询中的所有项目(只是id上与其他两个表的简单连接) 查询返回以下结果: [ { "id": 1, "highPriority":"foo", "medPriority":["foo", "bar"], "lowPriorit

我在CreateReact应用程序中有一个页面,用于读取postgres查询中的所有项目(只是id上与其他两个表的简单连接)

查询返回以下结果:

[
    {
        "id": 1,
        "highPriority":"foo",
        "medPriority":["foo", "bar"],
        "lowPriority":["foo", "bar"],
        "group":"123ABC",
    },
    {
        "id": 2,
        "highPriority":"bar",
        "medPriority":["foo", "bar"],
        "lowPriority":["foo", "bar"],
        "group":"123ABC",
    },
    etc...
]
我正在使用react挂钩,因此我将状态设置为:

  const [priorities, setPriorities] = useState([{}]);
  useEffect(() => {
    const prioritiesArray = prioritiesService.getAll();
    setPriorities(prioritiesArray);

    
  }, [props])
然后尝试这样映射它:(类名是bootstrap)

它指向这条线:

<h6 class="card-subtitle mb-2 text-muted">{priorityObj.highPriority}</h6>
{priorityObj.highPriority}
就在嵌套贴图之前


非常感谢您提供的任何帮助

您似乎正在使用对象数组初始化状态,但使用的是空对象

const[priorities,setPriorities]=useState([{}]);
//这让我觉得里面有孩子,
//因为数组的长度现在大于0
React然后尝试访问此项及其属性,由于它们都未定义,因此会出现此错误。尝试将状态设置为类似以下内容:

const[priorities,setPriorities]=useState([]);
useffect(()=>{
const prioritiesArray=prioritiesService.getAll();
设置优先级(优先级阵列);
}[道具];

您应该使用空数组初始化优先级,而不是使用空对象初始化数组。这是你的问题。因为当映射数组时,它会将空对象作为数组项,然后尝试调用

.medPriority.map
您的空对象的“medPriority”属性未定义,并且它尝试执行.medPriority.map,因此未定义的对象没有map方法:) 这应该起作用:

  const [priorities, setPriorities] = useState([]);

这是有道理的,但我现在得到一个错误,priorities.map不是一个函数?有什么想法吗?这意味着您的服务返回的结果不是数组。但以防万一你能在之前签上“?”号?。mapI我确信它是一个数组。我的服务查询返回res.data中“优先级”数组的API。还有,在哪里放置“?”符号?优先级?。mapI根据您的答案和Marat的答案进行了此操作,但我现在收到一个错误,即priorities.map不是一个函数?@KeenanHillerbrand您的服务返回什么?它查询一个返回“优先级”数组的API在res。data@KeenanHillerbrand您的服务很可能无法正确处理错误或返回错误
.medPriority.map
  const [priorities, setPriorities] = useState([]);