首页 > 解决方案 > Js子字符串不适用于反应获取的字符串

问题描述

我在谷歌上找不到答案,所以我想你们可能会帮助我。

所以我尝试了 componentWillMount(), componentDidMount() 但似乎在我收到获取的字符串之前调用了 substring 方法。

import React, { Component } from 'react';
import axios from "axios";

class Home extends Component {
    constructor(props){
        super(props);
        this.state = {
            reminders: [{}],
            test: "test"
        };
    }

    getReminders(){
        fetch('/api/reminder/',{method:"GET"}).then(resp => resp.json()).then(data => 
            this.setState({reminders:data}));
    }

    componentWillMount(){
        this.getReminders();
    };

    render() {
        return (
            <div className="main-table">
                { this.state.reminders.map((x,i) => 
                <div key={i} className="table-item">
                    <div className="item-name">{x.title}</div>
                    <div className="item-content flex">
                        <div className="time">{x.from.substr(11,2)} - {x.to}</div>
                        <div className="location">{x.location}</div>
                    </div>
                </div>) }
            </div>
        );
    }
}

export default Home;

标签: javascriptreactjslaravel

解决方案


reminders从in 中取出空对象,state因此数组没有初始长度

那就是给数组一个长度,1并且你在里面寻找的属性map()在那个特定的对象上不存在

    this.state = {
        reminders: [],
        test: "test"
    };

推荐阅读