gpt4 book ai didi

javascript - 迭代 JSON 并在 React 中添加按钮

转载 作者:行者123 更新时间:2023-12-02 21:24:25 25 4
gpt4 key购买 nike

我是 React 新手,我在这段代码中遇到问题:

class Tests extends React.Component {

async getTests() {
var url = "http://127.0.0.1:100/getTestList"
var buttons=[];
const resp = await fetch(url);
const data = await resp.json();

for(let pkg in data){
console.log(pkg);
for (let cls in data[pkg]){
console.log(cls);

for (var i = 0; i < data[pkg][cls].length; i++) {
let m= data[pkg][cls][i];
buttons.push(<button value={cls}>{m}</button>);
}
}
}

return buttons;

}
render(){
return(
<div>
<h4>Using .map()</h4>
{this.getTests()}

</div>
)
}

}//fine classe

// ========================================

ReactDOM.render(
<Tests />,
document.getElementById('root')

);

我从 POST 服务正确获取 JSON 响应,正确迭代 JSON 以获得包含值和文本的按钮数组,但在 Chrome 上出现此错误:

Error: Objects are not valid as a React child (found: [object Promise]). If you meant to render a collection of children, use an array instead. in div (at src/index.js:95) in Tests (at src/index.js:108)

一些提示?谢谢问候

最佳答案

对于这种情况,我将使用带有 useStateuseEffect 的函数组件。在 useEffect 中,您可以从端点获取数据,然后使用 .map() 您可以从使用 useState 实例化的数组中表示按钮.

请参阅以下可能解决该问题的解决方案:

const Tests = () => {
const [buttons, setButtons] = useState([]);

useEffect(() => {
async getTests() {
const url = 'http://127.0.0.1:100/getTestList';
const resp = await fetch(url);
const data = await resp.json();
const fetchedButtons = [];

for (let pkg in data) {
for (let cls in data[pkg]) {
for (var i = 0; i < data[pkg][cls].length; i++) {
let m = data[pkg][cls][i];
fetchedButtons.push(<button value={cls}>{m}</button>);
}
}
}

setButtons(fetchedButtons);
}

getTests();
}, []);

return <div>
<h4>Using.map()</h4>
{/* here mapping the buttons array */}
{
buttons && buttons.map(e => e);
}
</div>
}

希望这会有所帮助!

关于javascript - 迭代 JSON 并在 React 中添加按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60770644/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com