请帮忙,我的代码有问题,见过一些类似的问题,但没有找到原因。我有一个错误。 TypeError:this.state.datacharts.map不是一个函数..请帮助错误在哪里,因为我只是reactjs 这是我的代码:
import React, { Component } from 'react';
import ReactSpeedometer from "react-d3-speedometer"
// Resolves charts dependancy
const API = 'http://localhost:9000/Sales_vs_Target';
class Chart_SalesVsTarget extends Component {
constructor(props) {
super(props);
this.state = {
datacharts: ''
};
}
callAPI() {
fetch(API)
.then(res => res.text())
// .then(res => this.setState({res}, () =>
// console.log('Datacharts fetched...', res)))
.then(res => this.setState({ datacharts: res }));
}
componentDidMount() {
this.callAPI();
}
render() {
return (
<div>
<center><h4>Sales vs Target</h4></center>
<a href='/Table_nas'>
<center>
<div>
{/* {this.props.apiResponse.map(apiResponses => */}
<div style={{
width: '500px',
height: '300px',
background: '#e4e5e6'
}}>
{this.state.datacharts.map(apiResponses =>
<ReactSpeedometer
fluidWidth
minValue={0}
maxValue={100}
value={apiResponses.PERSEN_NAS}
/>
)}
</div>
</div>
</center>
</a>
</div>
);
}
}
export default Chart_SalesVsTarget;
答案 0 :(得分:2)
在调用ComponentDidMount之前,渲染函数将以初始道具和状态运行。
您确实将初始状态设置为datacharts: ""
,这是一个字符串。但是String没有方法String.map()
,因此会出错。
我建议在构造函数内部使用this.state = { datacharts: [] }