关于fetchFinish

来源:1-1 项目简介

weixin_慕圣6334738

2021-05-14 22:45:37

老师你好

下面这段代码来自项目的Vip里的index:

render() {

if (this.state.login) {

if (this.state.fetchFinish) {

return <div className='vip'>Vip</div>

} else {

return <div className='vip'>正在判断用户登陆状态...</div>

}

} else {

// 允许你在非处理routing界面进行页面跳转

return <Redirect to='/' />

}

}


// 在获取数据之前先跑一遍,然后马上获取数据跑第二遍

componentDidMount() {

axios.get('http://www.dell-lee.com/react/api/isLogin.json', {

withCredentials: true

})

.then(res => {

const login = res.data.data.login;

this.setState({

login,

fetchFinish: true

})

})

}



我的问题是:

什么情况会出现

return <div className='vip'>正在判断用户登陆状态...</div>?

这种情况应该不会发生吧,因为有个componentDidMount肯定会在render之前执行完的,所以fetchFinish不应该肯定是true吗



写回答

1回答

好帮手慕慕子

2021-05-15

同学你好,对于你的问题解答如下:

1、会发生的,当你从其他页面,点击vip按钮时,第一次vip页面时,就有一个提示“正在判断用户登录状态”。示例:

http://img.mukewang.com/climg/609f3cc90a126f1415340268.jpg

2、componentDiMount是在render第一次渲染之后调用,而初始设置的fetchFinish值为false,所以第一次进入vip页面时,会显示“正在判断用户登录状态...”然后执行componentDidMount函数中的代码,根据返回的值,调用setSate方法修改对应的值,然后再次执行render函数重新渲染。

http://img1.sycdn.imooc.com/climg/609f3af7092e20ee09370737.jpg

祝学习愉快~

0

0 学习 · 15276 问题

查看课程

相似问题