带有来自fetch()的数组的React16.4 setState不起作用

时间:2018-12-04 11:43:35

标签: javascript arrays reactjs setstate

以下代码中的this.setState({allInit})完全相同的行适用于字符串和数字状态(viewMode或numberInit),但不适用于数组(allInit或Initiative)。 整个早晨搜索失败后,任何提示将不胜感激!

export class ContextProvider extends Component {
  constructor(props) {
    super(props);
    this.state = {
      allInit: [],
      initiatives: [1, 2, 3],
      viewMode: 'map',
      numberInit: 248
    };
  }

  componentDidMount() {
    fetch('../../json/allinit.json')
      .then(res => res.json())
      .then(({ allInit }) => {
        this.setState({ allInit }); //this line does not work for array value
        console.log(allInit); // Array of 208 objects
      });
  }

  render() {
    console.log(this.state.allInit); // empty array []
    return (
      <Context.Provider value={this.state}>
        {this.props.children}
      </Context.Provider>
    );
  }
}

0 个答案:

没有答案