reactjs – 在安装react组件时未调用componentDidMount()

前端之家收集整理的这篇文章主要介绍了reactjs – 在安装react组件时未调用componentDidMount()前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我一直试图从服务器获取一些数据,并且由于一些奇怪的原因,componentDidMount()没有按原样触发.我在componentDidMount()中添加了一个console.log()语句来检查它是否正在触发.我知道对服务器的请求是正常的,因为我在反应之外使用它并且它应该工作.
  1. class App extends React.Component {
  2. constructor(props,context) {
  3. super(props,context);
  4. this.state = {
  5. obj: {}
  6. };
  7. };
  8.  
  9. getAllStarShips () {
  10. reachGraphQL('http://localhost:4000/',`{
  11. allStarships(first: 7) {
  12. edges {
  13. node {
  14. id
  15. name
  16. model
  17. costInCredits
  18. pilotConnection {
  19. edges {
  20. node {
  21. ...pilotFragment
  22. }
  23. }
  24. }
  25. }
  26. }
  27. }
  28. }
  29. fragment pilotFragment on Person {
  30. name
  31. homeworld { name }
  32. }`,{}). then((data) => {
  33. console.log('getALL:',JSON.stringify(data,null,2))
  34. this.setState({
  35. obj: data
  36. });
  37. });
  38. }
  39.  
  40. componentDidMount() {
  41. console.log('Check to see if firing')
  42. this.getAllStarShips();
  43. }
  44.  
  45. render() {
  46. console.log('state:',JSON.stringify(this.state.obj,2));
  47. return (
  48. <div>
  49. <h1>React-Reach!</h1>
  50. <p>{this.state.obj.allStarships.edges[1].node.name}</p>
  51. </div>
  52. );
  53. }
  54.  
  55. }
  56.  
  57. render(
  58. <App></App>,document.getElementById('app')
  59. );
这里的问题是渲染方法崩溃,因为以下行生成错误
  1. <p>{this.state.obj.allStarships.edges[1].node.name}</p>

解决此问题,不要直接使用this.state.obj.allStarships.edges [1] .node.name,除非您可以保证每个接收器都已定义.

猜你在找的React相关文章