Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
241 views
in Technique[技术] by (71.8m points)

react请求到数据后...

先上代码:
父组件:

import React,{Component} from 'react'

export default class Father extends Component { 
    constructor(props){
        super(props)
        this.state={
            role: {}
        }
    } 

    componentDidMount() {
        fetch("xxxx").then(res=>{
            this.setState({
                role:res.data.role //获取数据   
            })
        })
    }

     render(){
        return(
            <div>
                <Child role={this.state.role} />  //将数据传给子组件
            </div>
        )
    } 

}

上面是父组件的代码,子组件要通过this.props.role.info.roleName来获取roleName显示在页面上。
问题来了:
组件第一次render的时候,数据还没有请求过来,此时子组件获取的其实是默认的空对象{},里面不存在info,更别说roleName了,这时就会导致浏览器报错。
这种情况应该如何处理?


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

没有特殊需求的话可以把ajax放到componentWillMount周期。

如果非的是componentDidMount的话,可以给子组件赋值一个defaultProps。


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...