代码之家  ›  专栏  ›  技术社区  ›  fun joker

如何在获取未定义状态时呈现数据?

  •  0
  • fun joker  · 技术社区  · 6 年前

    我在componentdidmount中获取数据,但是在初始渲染期间,我会得到未定义的数据,然后再次进行渲染,在此期间填充状态变量。现在,当它不是未定义的并且在填充之后,我想销毁它并显示组件内的数据。

    注意:getprojectdetails()生成一个get req来填充数据。

    我正在获取未定义的类型错误名称。

      constructor(props) {
                super(props);
                this.state = {
                   projectDetails: ''
                };
            }
    
        componentDidMount() {
                getProjectDetails(this.props.logged_in_user, this.props.projectId)
                    .then( res => {
                        this.setState({projectDetails: res});
                    })
                    .catch(err => {
                        console.log('Error: ' + err);
                    })
            }
    
        //Inside render()
    
        render() {
                console.log('Project details from API endpoint: ', this.state.projectDetails.project)
    
                const { projectDetails } = this.state;
                console.log('Destructure: ', projectDetails);
    
                const project = this.state.projectDetails.project;
    
        let {  
                    name,
                    location,
                    city,
                    builder_name } = project;
    
    1 回复  |  直到 6 年前
        1
  •  2
  •   Lukas Germerott    6 年前

    如果设置了状态,则可以检查以下内容:

    render() {
        if(this.state.projectDetails === ''){
            return <div>Loading</div>;
        }
        else{
            return <div>{this.state.projectDetails.project}</div>
        }
    }
    

    只要状态为假,就会返回加载,如果有值,那么 this.state.projectDetails.project 返回。希望有帮助。

    编辑: 在获取数据之前和设置状态之后,将调用两次render方法。所以这只会返回数据,如果它真的设置了的话。