美文网首页
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