美文网首页
8.React生命周期函数(2) [ajax数据请求,Charl

8.React生命周期函数(2) [ajax数据请求,Charl

作者: 你坤儿姐 | 来源:发表于2019-04-30 11:28 被阅读0次
1.在子组件中,shouldComponentUpdate可以用来避免不必要的渲染,节省性能
shouldComponentUpdate(nextProps, nextState, nextContext) {
    //nextProps指的是接下来我的props会变成什么样
    //nextState指的是接下来我的state会变成什么样

    //如果我接下来的props里的content不等于当前prop里面的content 则需要渲染
    if (nextProps.content !== this.props.content){
      return true;
    } else {
      return false;
    }
  }
2.生命周期中,使用ajax数据请求

在终端将axios库安装到项目中,重新启动服务器
LYKdeMacBook-Pro:my-app hm$ yarn add axios
npm run start

在页面引入

import axios from 'axios';
//componentWillMount、componentDidMount只有在页面第一次挂载的时候被执行
  //ajax请求放在componentWillMount,可能会和以后更高端的方法起到冲突
  componentWillMount() {

  }
  //ajax请求放在这里不会有问题
  componentDidMount() {
       axios.get('/api/my-app')
         .then(()=>{alert('success')})
         .catch(()=>{alert('error')})
  }

使用Charles实现本地数据

1.安装Charles 略
2.打开Charles
到菜单 Tool ——> Map Local Setting里设置


Snip20190430_2.png Snip20190430_7.png
选择创建的存储数据的.json文件,如我的.json文件中内容为:
["Dell" , "Lee" , "IMOOC"] Snip20190430_5.png Snip20190430_8.png
command + R刷新网页弹出success。
谷歌浏览器可能有未知错误,请换其他浏览器操作。
操作成功,修改代码让数据显示
componentDidMount() {
       axios.get('/api/todolists')
         .then((res)=>{
           console.log(res.data);
           this.setState(() => {
             return {
               list: res.data
             }
           })
         })
         .catch(()=>{alert('error')})
  }

优化这段代码

componentDidMount() {
       axios.get('/api/todolists')
         .then((res)=>{
           console.log(res.data);
           this.setState(() => ({
               list: [...res.data]
             }))
         })
         .catch(()=>{alert('error')})
  }

相关文章

网友评论

      本文标题:8.React生命周期函数(2) [ajax数据请求,Charl

      本文链接:https://www.haomeiwen.com/subject/jzumnqtx.html