react中,关于在componentDidmount()中请求数据的问题

之前看文章说,不推荐在componentWillmount中请求数据,事实上这个方法也不推荐了(变成unsafe方法了)
那么有个问题,如果componentDidmount中请求数据,用来改变组件的state
因为其顺序在render之后
那么每次完整的初始化,就肯定会初始化两次了

不知道我理解的是否正确?或者有什么更好的方法吗?请赐教哈

阅读 3k
3 个回答

理解没问题,请求接口取数的话,本来就慢一拍的,所以即便是写在willMount中也不能保证一定能在render之前拿到,render中本就需要考虑请求的数据未得到的情况。

如果要求在页面渲染的时候数据必须准备好,可以换成服务端渲染页面然后注入数据到window上,或者直接ssr的时候搞。

初始化一次,render两次,没有问题,一般第二次render前会加入loading或者骨架屏

官方不推荐:

  1. 在服务器渲染时,如果在 componentWillMount 里获取数据,fetch data会执行两次,一次在服务端一次在客户端,这造成了多余的请求
  2. 在React 16进行React Fiber重写后,componentWillMount可能在一次渲染中多次调用

willMount 到 didMount用不了太久,比http请求时间短多了,就算是在willMount里去做http,也会render() 两次的

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题