TypeError:this.state.datacharts.map不是函数

时间:2019-04-26 18:43:54

标签: reactjs

请帮忙,我的代码有问题,见过一些类似的问题,但没有找到原因。我有一个错误。 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;

1 个答案:

答案 0 :(得分:2)

在调用ComponentDidMount之前,渲染函数将以初始道具和状态运行。 您确实将初始状态设置为datacharts: "",这是一个字符串。但是String没有方法String.map(),因此会出错。

我建议在构造函数内部使用this.state = { datacharts: [] }