gpt4 book ai didi

javascript - ReactJS map 功能未按预期工作

转载 作者:行者123 更新时间:2023-12-03 01:15:32 24 4
gpt4 key购买 nike

我有一个reactJS应用程序,我试图动态渲染我用 fetch() promise 读入的一些数据。这是我的应用程序的代码:

    import React from 'react'; 
import '../styles/app.css';

//think of react components as functions
class Testpage2 extends React.Component {

constructor(props) {
super(props);
this.state = {
numberOfRecords: 0,
productArray: [{
barcode: '',
name: ''
}]
};

}

componentDidMount() {

let currentComponent = this;
var recordCount = 0;
var tempData = [];

//Make use of the API not the web service.
let url = "http://wmjwwebapi-dev.us-west-2.elasticbeanstalk.com/api/getdata";
const options = { method: 'GET' };

fetch(url, options)
.then(function(response) {
return response.json();
})
.then(function(myJson) {
if (myJson == undefined)
{
console.log("fetch failed");
}
else
{
//inspect the data that the WebAPI returned
var return_code = myJson[0].return_code;
if (return_code == "Default Return code"){
recordCount = -2;
} else {
tempData = JSON.parse(myJson[0].return_string);
recordCount = tempData.barcode.length;
}
currentComponent.setState(
{
numberOfRecords: recordCount,
productArray: currentComponent.state.productArray.push(
{
name: tempData.name,
barcode: tempData.barcode
})
}
);
}
});
}

render() {
console.log(this.state.productArray);
return (
<div>
{ this.state.productArray.map((prod, index) => <li key={index}>{prod.barcode}</li>)}
</div>
)
}
}

export default Testpage2

这是我收到的错误消息:

Uncaught (in promise) TypeError: this.state.productArray.map is not a function
at Testpage2.render (testpage2.js:67)

这是我在 render() 函数中添加的 console.log() 的结果:

enter image description here

我不太确定这个错误告诉我什么或如何调试问题。

非常感谢任何帮助。谢谢。

最佳答案

array.push 的返回类型是数组的新长度,也就是数字

因此,您将状态属性productArray设置为一个数字,然后尝试调用未定义的number.map

如何解决?

先推送,然后使用该数组设置状态

const updatedArray = [...currentComponent.state.productArray] 
updatedArray.push({ name: tempData.name, barcode: tempData.barcode })

currentComponent.setState({
numberOfRecords: recordCount,
productArray: updatedArray
}

资源: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/push

关于javascript - ReactJS map 功能未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52030739/

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