如何正确显示 JSON 记录

how to properly display json records

提问人:Nancy Moore 提问时间:10/18/2023 最后编辑:Jim G.Nancy Moore 更新时间:10/18/2023 访问量:31

问:

编码部分有效。

我正在尝试通过 reactjs 从 Atlassian 实例获取记录。跟{codes ? JSON.stringify(codes) : 'Loading record'}

我可以按如下方式获得记录

[{"value":{"idx":"100","name":"php"},"key":"mykey"}]

这是我的问题:当我决定按照下面的代码映射记录时,我在浏览器控制台中看到错误

**TypeError: M is null
    Qd App.js:**



{codes.map(code => (
<div>
<b>{code.value.idx}</b><br/>
<b>{code.value.name}</b><br/>
</div>
    ))}
  {codes.length === 0 && <div>No Record Found</div>}

这是完整的代码

App.js

import React, { useEffect, useState, Fragment } from "react";

function App() {
const [codes, setCodes] = useState(null);

  useEffect(() => {
invoke('mymethod').then(setCodes); 

}, []);

  return (
    <div>
      <h2> Display Codes Data</h2>

      {codes.map(code => (
<div>
<b>{code.value.idx}</b><br/>
<b>{code.value.name}</b><br/>
</div>
    ))}
  {codes.length === 0 && <div>No Record Found</div>}

{codes ? JSON.stringify(codes) : 'Loading record'}

    </div>
  );
}

export default App;

索引.js

import Resolver from '@forge/resolver';
import api, { route } from "@forge/api";

const resolver = new Resolver();

resolver.define('mymethod', async (req) => { 
const res = await storage.query().where('key', startsWith('mykey')).limit(20).getMany();

console.log(res);
return res.results;

});



export const handler = resolver.getDefinitions();
reactjs json ecmascript-6

评论


答:

1赞 Phil 10/18/2023 #1
const [codes, setCodes] = useState(null);

在这里,最初是第一次渲染时是这样,会抛出错误。codesnullcodes.map()codes.length

尝试将状态初始化为空数组...

const [code, setCodes] = useState([]);

安全地调用和使用可选链接.map().length

{codes?.map(code => (
  <div key={code.key}>
    <b>{code.value.idx}</b><br/>
    <b>{code.value.name}</b><br/>
  </div>
))}
{!codes?.length && <div>No Record Found</div>}

我的偏好是第一个选项,因为这意味着您不必担心任何地方的可能值。null