为了账号安全,请及时绑定邮箱和手机立即绑定

映射存在于对象内部的数组仅在条件语句中给出时有效

映射存在于对象内部的数组仅在条件语句中给出时有效

ITMISS 2022-12-29 16:47:23
我正在使用 Reactjs。我想渲染一个存在于对象内部的数组。state = {   obj: {            name: abhishek,           age: 23,           characterList: ['a','b','c','d']        }}我发现为了呈现 characterList,我必须将其包装在条件语句中。而且我无法弄清楚原因。不正确:render(){return(         <>             {                 this.state.obj.characterList.map((character, i) => {                      return(                          <h1>{character}</h1>                      )                 })             }         </>      )这会产生错误 - “无法读取未定义的属性‘map’”但是如果在这样的条件语句中给出 -正确的:render(){return(         <>             { this.state.obj.characterList ?                (                   this.state.obj.characterList.map((character, i) => {                        return(                            <h1>{character}</h1>                        )                   })               ) : null             }         </>      )原始代码:给出错误(无法读取未定义的属性“映射”)export default (props) => {  const [FAQs, setFAQs] = useState([]);  useEffect(async () => {    const res = await Axios.get("http://localhost:5000/FAQs/getFAQs");    setFAQs(res.data);    console.log(res.data);  }, []);  return (    <React.Fragment>      <div className="faqs-wapper">        <div className="faqs-heading">          <h1>Frequently asked questions</h1>          <h2>{FAQs.category}</h2> //This works fine.        </div>        {             FAQs.FAQList.map((QA,i) => {                return (                    <div key={i}>                        <p>{QA.question}</p>                    </div>                )            })        }      </div>    </React.Fragment>  );};
查看完整描述

1 回答

?
浮云间

TA贡献1829条经验 获得超4个赞

您正在将 FAQs 初始化为useState. 在您的 api 请求完成后,您的setFAQs方法似乎设置FAQs为一个对象,并FAQList作为 FAQs 对象上的键。更改setFAQs(res.data)setFAQs(res.data.FAQList)并将您的地图更改为FAQs.mapFAQs.FAQList.map

您的原始错误正在发生,因为该组件在 api 请求完成之前呈现并且FAQs.FAQList未定义。您正在尝试在此处查找未定义值的属性:FAQs.FAQList.map这会引发类型错误。


查看完整回答
反对 回复 2022-12-29
  • 1 回答
  • 0 关注
  • 114 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号