资讯专栏INFORMATION COLUMN

redux常见问题答疑

wing324 / 2534人阅读

摘要:为什么使用的核心是将组件化,由数据驱动的展现。仅仅使用进行开发的痛点组件嵌套层级深,回调地狱。遵守容器组件与展示组件分离的原则。

为什么使用redux

React的核心是将UI组件化,由数据驱动UI的展现。但是如何管理数据模型、组件与数据模型之间的通信,react并没有很好的解决方案。Redux由flux演变而来,同时简化了Flux的流程。

仅仅使用react进行开发的痛点

组件嵌套层级深,回调地狱。你可能会在一个较深层次的组件里需要更新全局state的某个字段,却无奈只能通过从顶层组件一层一层传递下来的props进行回调。

页面的state不可预测。由于state缺乏一种可预测的机制,导致用户在进行一些页面操作(更改state),或者异步请求有新的数据从服务端返回的时候,state的变化已经不可控制,很容易产生bug

redux是怎么解决痛点的?

1、通过react-redux提供的Provider组件,在根组件外面包一层,这样根组件,以及所有的子组件都能拿到store。实现的原理是基于React自身提供的context属性,但是react官方不推荐直接在组件中使用this.context。所以react-redux提供了另一种方法connect,通过connect将普通的UI组件升级为容器组件,同时将获取store的细节也一并封装在生成容器组件的代码中,从而容器组件可以直接拿到store





// 定义App组件
class Foo extends React.Component{
    render() {
    const { text } = this.props;
    return 
{text}
; } } const App = connect( mapStateToProps, mapDispatchToProps )(Foo);

2、使用纯函数修改state,保证state变化可预测。每次更改都返回一个全新的state。
3、遵守容器组件与展示组件分离的原则。这是redux一个重要的思想,容器组件和展示组件各司其职。

容器组件

容器组件负责以下几件事情:

处理数据逻辑

将store中的state转变为props传递给展示组件,对应mapStateToProps

将注入了dispatch的函数作为props传递给展示组件,对应mapDispatchToProps

有状态的(展示组件则是无状态的)

发起action,更新state

没有DOM标签,没有样式

展示组件

可复用的组件,又称为“傻瓜组件”,仅仅通过容器组件传进来的props进行UI展示,以及操作回调。感知不到redux的存在,脱离redux框架也能使用,尽量保持无状态(可包含少量的UI状态),有以下几条原则:

不理解数据逻辑:不关心数据是如何得到的,也不关心数据是如何改变的

只通过props获取数据和操作回调

基本是无状态的:必须有的话,可以是UI的状态

什么时候引入容器组件

在引入之前,你可以先只用展示组件来构建App。当你发现有些组件并不会用到传进来的属性,而仅仅只是把它往下传给子组件的时候(并且层级比较深,超过两层),你就要考虑引入容器组件了。

为什么使用immutable.js

首先,在没有immutable.js的情况下,碰到较深层次的数据结构时,更新state会变得很麻烦。

旧的state:

{
  priceInfo: {
    price: 200,
    promotion: {
      offValue: 30
    }
  }
}

现在需要只更新offValue的值为50,该怎么处理呢?

let newState = _.cloneDeep(this.state);
newState.priceInfo.promotion.offValue = 50;
this.setState(newState);

可以看到,需要先深度复制一份this.state,然后修改offValue的值,最后执行setState。除了这个过程的有点复杂,另外深度复制对象是挺耗性能的一件事。而通过Immutable.js,我们只需要这样做:

let initialState = Immutable.fromJS({
  priceInfo: {
    price: 200,
    promotion: {
      offValue: 30
    }
  }
});
this.setState(initialState.setIn(["priceInfo", "promotion", "offValue"]), 50);
immutable.js带来的性能提升

React做性能优化时经常用到 shouldComponentUpdate,只有深度比较才能得出正确的值,决定是否render,而深度比较是十分消耗性能的。Immutable 则提供了简洁高效的判断数据是否变化的方法,只需 ===is 比较就能知道是否需要执行render(),而这个操作几乎零成本,所以可以极大提高性能。

immutable.js的数据结构如何正确使用...扩展运算符

在jsx的语法中,你已经习惯了使用扩展运算符来传递props,如下所示:

const titleInfo = {
  title: "主标题",
  subTitle: "副标题"
};

...

import Title from "title";

render() {
  return (
    
  );
}
</pre>
<p>但是如果你要传递的数据是<b>Immutable.Map</b>类型的,使用<b>...</b>扩展运算符,得到的数据可能与你期望的不太一样,因为<b>Immutable.Map</b>的实例对象并不是plain object。<b>{...titleInfo}</b>等同于<b>Object.assign({}, titleInfo)</b>。Immutable.js提供了一种方法,可以实现这种转换,如果是Map实例,只需调用<b>toObject()</b>(不要调用深度复制的<b>toJS</b>),就可以将Immutable.js的Map对象转变为可以使用<b>...</b>扩展运算符的plain object。</p>           
               
                                           
                       
                 </div>
            
                     <div class="mt-64 tags-seach" >
                 <div class="tags-info">
                                                                                                                    
                         <a style="width:120px;" title="云服务器" href="https://www.ucloud.cn/site/active/kuaijiesale.html?ytag=seo">云服务器</a>
                                             
                         <a style="width:120px;" title="私有云" href="https://www.ucloudstack.com/?ytag=seo">私有云</a>
                                                                                                                                                 
                                      
                     
                    
                                                                                               <a style="width:120px;" title="python答疑" href="https://www.ucloud.cn/yun/tag/pythondayi/">python答疑</a>
                                                                                                           <a style="width:120px;" title="python课程答疑" href="https://www.ucloud.cn/yun/tag/pythonkechengdayi/">python课程答疑</a>
                                                                                                           <a style="width:120px;" title="Redux" href="https://www.ucloud.cn/yun/tag/Redux/">Redux</a>
                                                                                                           <a style="width:120px;" title="redux源码" href="https://www.ucloud.cn/yun/tag/reduxyuanma/">redux源码</a>
                                                         
                 </div>
               
              </div>
             
               <div class="entry-copyright mb-30">
                   <p class="mb-15"> 文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。</p>
                 
                   <p>转载请注明本文地址:https://www.ucloud.cn/yun/81026.html</p>
               </div>
                      
               <ul class="pre-next-page">
                 
                                  <li class="ellipsis"><a class="hpf" href="https://www.ucloud.cn/yun/81025.html">上一篇:[deviceone开发]-仿微信主界面示例</a></li>  
                                                
                                       <li class="ellipsis"><a class="hpf" href="https://www.ucloud.cn/yun/81027.html">下一篇:前端阅读笔记 2016-11-24</a></li>
                                  </ul>
              </div>
              <div class="about_topicone-mid">
                <h3 class="top-com-title mb-0"><span data-id="0">相关文章</span></h3>
                <ul class="com_white-left-mid atricle-list-box">
                             
                                                                                                    <li>
                                                <div class="atricle-list-right">
                          <h2 class="ellipsis2"><a class="hpf" href="https://www.ucloud.cn/yun/87994.html"><b>专治前端焦虑的学习方案</b></a></h2>
                                                     <p class="ellipsis2 good">摘要:不过今天我希望能够更进一步,不仅仅再抱怨现状,而是从我个人的角度来给出一个逐步深入学习生态圈的方案。最后,我还是想提到下对于的好的学习方法就是回顾参照各种各样的代码库,学习人家的用法与实践。

本文翻译自A-Study-Plan-To-Cure-JavaScript-Fatigue。笔者看到里面的几张配图着实漂亮,顺手翻译了一波。本文从属于笔者的Web Frontend Introduc...</p>
                                                   
                          <div class="com_white-left-info">
                                <div class="com_white-left-infol">
                                    <a href="https://www.ucloud.cn/yun/u-170.html"><img src="https://www.ucloud.cn/yun/data/avatar/000/00/01/small_000000170.jpg" alt=""><span class="layui-hide64">codeGoogle</span></a>
                                    <time datetime="">2019-08-21 14:41</time>
                                    <span><i class="fa fa-commenting"></i>评论0</span> 
                                    <span><i class="fa fa-star"></i>收藏0</span> 
                                </div>
                          </div>
                      </div>
                    </li> 
                                                                                       <li>
                                                <div class="atricle-list-right">
                          <h2 class="ellipsis2"><a class="hpf" href="https://www.ucloud.cn/yun/19654.html"><b>官方<em>答疑</em>集锦 | 第一期</b></a></h2>
                                                     <p class="ellipsis2 good">摘要:对获奖队伍,官方要求提交代码,并邀请答辩。是否允许公开代码到公共平台,如答疑可以官方会出个吗答疑会无法顺利加入团队显示密令有误和操作频繁答疑应该是团队密令有误,请注意大小写。

1、由于公开测试集,所以可以人工作答直接写答案。或者将预测值中拿不准的答案由人工来做。这是个漏洞,获奖队伍是否会由官方进行二次验证?答疑:会的。对获奖队伍,官方要求提交代码,并邀请答辩。最终的获奖名次将由模型表现...</p>
                                                   
                          <div class="com_white-left-info">
                                <div class="com_white-left-infol">
                                    <a href="https://www.ucloud.cn/yun/u-293.html"><img src="https://www.ucloud.cn/yun/data/avatar/000/00/02/small_000000293.jpg" alt=""><span class="layui-hide64">luxixing</span></a>
                                    <time datetime="">2019-06-26 18:17</time>
                                    <span><i class="fa fa-commenting"></i>评论0</span> 
                                    <span><i class="fa fa-star"></i>收藏0</span> 
                                </div>
                          </div>
                      </div>
                    </li> 
                                                                                       <li>
                                                <div class="atricle-list-right">
                          <h2 class="ellipsis2"><a class="hpf" href="https://www.ucloud.cn/yun/122116.html"><b>启明云端分享|ESP32在开发环境时,常遇到的<em>问题</em><em>答疑</em>(FAQ)</b></a></h2>
                                                     <p class="ellipsis2 good">摘要:目录开发环境调试分析环境搭建问题描述及解答开发环境调试分析下使用官方环境安装包出现错误。大部分情况下是因为网络问题下载错误,具体错误查看错误。已存在虚拟环境,则需要删掉重新安装。                                                                                                            ...</p>
                                                   
                          <div class="com_white-left-info">
                                <div class="com_white-left-infol">
                                    <a href="https://www.ucloud.cn/yun/u-1482.html"><img src="https://www.ucloud.cn/yun/data/avatar/000/00/14/small_000001482.jpg" alt=""><span class="layui-hide64">scwang90</span></a>
                                    <time datetime="">2021-10-11 10:58</time>
                                    <span><i class="fa fa-commenting"></i>评论0</span> 
                                    <span><i class="fa fa-star"></i>收藏0</span> 
                                </div>
                          </div>
                      </div>
                    </li> 
                                                                                       <li>
                                                <div class="atricle-list-right">
                          <h2 class="ellipsis2"><a class="hpf" href="https://www.ucloud.cn/yun/54894.html"><b>前端面试必<em>问题</em><em>答疑</em>(1)</b></a></h2>
                                                     <p class="ellipsis2 good">摘要:一,前端性能优化有哪些页面优化方面,减少请求数设计简化页面合理设置缓存资源合并与压缩图片嵌入,将外部脚本置底,异步执行脚本,,将外链放在中,异步请求,减少不必要的跳转,避免重复的资源请求代码优化方面,操作转为数组

一,前端性能优化有哪些?
a) 页面优化方面:
1,减少HTTP请求数--设计简化页面--合理设置缓存--资源合并与压缩--css sprites--图片嵌入--Lazy L...</p>
                                                   
                          <div class="com_white-left-info">
                                <div class="com_white-left-infol">
                                    <a href="https://www.ucloud.cn/yun/u-17.html"><img src="https://www.ucloud.cn/yun/data/avatar/000/00/00/small_000000017.jpg" alt=""><span class="layui-hide64">付永刚</span></a>
                                    <time datetime="">2019-08-02 16:13</time>
                                    <span><i class="fa fa-commenting"></i>评论0</span> 
                                    <span><i class="fa fa-star"></i>收藏0</span> 
                                </div>
                          </div>
                      </div>
                    </li> 
                                                                                       <li>
                                                <div class="atricle-list-right">
                          <h2 class="ellipsis2"><a class="hpf" href="https://www.ucloud.cn/yun/103634.html"><b>前端面试必<em>问题</em><em>答疑</em>(1)</b></a></h2>
                                                     <p class="ellipsis2 good">摘要:一,前端性能优化有哪些页面优化方面,减少请求数设计简化页面合理设置缓存资源合并与压缩图片嵌入,将外部脚本置底,异步执行脚本,,将外链放在中,异步请求,减少不必要的跳转,避免重复的资源请求代码优化方面,操作转为数组

一,前端性能优化有哪些?
a) 页面优化方面:
1,减少HTTP请求数--设计简化页面--合理设置缓存--资源合并与压缩--css sprites--图片嵌入--Lazy L...</p>
                                                   
                          <div class="com_white-left-info">
                                <div class="com_white-left-infol">
                                    <a href="https://www.ucloud.cn/yun/u-1415.html"><img src="https://www.ucloud.cn/yun/data/avatar/000/00/14/small_000001415.jpg" alt=""><span class="layui-hide64">voyagelab</span></a>
                                    <time datetime="">2019-08-23 16:59</time>
                                    <span><i class="fa fa-commenting"></i>评论0</span> 
                                    <span><i class="fa fa-star"></i>收藏0</span> 
                                </div>
                          </div>
                      </div>
                    </li> 
                                                                           
                </ul>
              </div>
              
               <div class="topicone-box-wangeditor">
                  
                  <h3 class="top-com-title mb-64"><span>发表评论</span></h3>
                   <div class="xcp-publish-main flex_box_zd">
                                      
                      <div class="unlogin-pinglun-box">
                        <a href="javascript:login()" class="grad">登陆后可评论</a>
                      </div>                   </div>
               </div>
              <div class="site-box-content">
                <div class="site-content-title">
                  <h3 class="top-com-title mb-64"><span>0条评论</span></h3>   
                </div> 
                      <div class="pages"></ul></div>
              </div>
           </div>
           <div class="layui-col-md4 layui-col-lg3 com_white-right site-wrap-right">
              <div class=""> 
                <div class="com_layuiright-box user-msgbox">
                    <a href="https://www.ucloud.cn/yun/u-796.html"><img src="https://www.ucloud.cn/yun/data/avatar/000/00/07/small_000000796.jpg" alt=""></a>
                    <h3><a href="https://www.ucloud.cn/yun/u-796.html" rel="nofollow">wing324</a></h3>
                    <h6>男<span>|</span>高级讲师</h6>
                    <div class="flex_box_zd user-msgbox-atten">
                     
                                                                      <a href="javascript:attentto_user(796)" id="attenttouser_796" class="grad follow-btn notfollow attention">我要关注</a>
      
                                                                                        <a href="javascript:login()" title="发私信" >我要私信</a>
                     
                                            
                    </div>
                    <div class="user-msgbox-list flex_box_zd">
                          <h3 class="hpf">TA的文章</h3>
                          <a href="https://www.ucloud.cn/yun/ut-796.html" class="box_hxjz">阅读更多</a>
                    </div>
                      <ul class="user-msgbox-ul">
                                                  <li><h3 class="ellipsis"><a href="https://www.ucloud.cn/yun/124621.html">实现出栈入栈以及获取栈中最小值,主要是获取最小值</a></h3>
                            <p>阅读 2739<span>·</span>2021-11-24 09:39</p></li>
                                                       <li><h3 class="ellipsis"><a href="https://www.ucloud.cn/yun/121476.html">2021最新jmeter接口测试入门到精通实战讲解,手把手教学</a></h3>
                            <p>阅读 2547<span>·</span>2021-09-29 09:34</p></li>
                                                       <li><h3 class="ellipsis"><a href="https://www.ucloud.cn/yun/121003.html">RUNIDC:香港E3服务器$30/月起,台湾E3服务器$50/月起</a></h3>
                            <p>阅读 3350<span>·</span>2021-09-24 10:23</p></li>
                                                       <li><h3 class="ellipsis"><a href="https://www.ucloud.cn/yun/120557.html">如何计算网络号和主机号-如何计算IP地址的网络号和主机号?</a></h3>
                            <p>阅读 1503<span>·</span>2021-09-22 15:41</p></li>
                                                       <li><h3 class="ellipsis"><a href="https://www.ucloud.cn/yun/117309.html">解决移动端一像素问题的Vue指令</a></h3>
                            <p>阅读 1517<span>·</span>2019-08-30 15:55</p></li>
                                                       <li><h3 class="ellipsis"><a href="https://www.ucloud.cn/yun/115675.html">提高开发效率之VS Code基础配置篇</a></h3>
                            <p>阅读 3424<span>·</span>2019-08-30 13:58</p></li>
                                                       <li><h3 class="ellipsis"><a href="https://www.ucloud.cn/yun/115366.html">CSS3 transform 详解</a></h3>
                            <p>阅读 2507<span>·</span>2019-08-30 13:11</p></li>
                                                       <li><h3 class="ellipsis"><a href="https://www.ucloud.cn/yun/111959.html">CSS3新特性学习</a></h3>
                            <p>阅读 1567<span>·</span>2019-08-29 12:31</p></li>
                                                
                      </ul>
                </div>

                   <!-- 文章详情右侧广告-->
              
  <div class="com_layuiright-box">
                  <h6 class="top-com-title"><span>最新活动</span></h6> 
           
         <div class="com_adbox">
                    <div class="layui-carousel" id="right-item">
                      <div carousel-item>
                                                                                                                       <div>
                          <a href="https://www.ucloud.cn/site/active/kuaijiesale.html?ytag=seo"  rel="nofollow">
                            <img src="https://www.ucloud.cn/yun/data/attach/240506/zYeoGo8M.png" alt="云服务器">                                 
                          </a>
                        </div>
                                                <div>
                          <a href="https://www.ucloud.cn/site/active/gpu.html?ytag=seo"  rel="nofollow">
                            <img src="https://www.ucloud.cn/yun/data/attach/240506/29R6rrOS.png" alt="GPU服务器">                                 
                          </a>
                        </div>
                                                <div>
                          <a href="https://www.ucloud.cn/site/active/kuaijiesale.html?ytag=seo#global-uhost"  rel="nofollow">
                            <img src="https://www.ucloud.cn/yun/data/attach/240506/FFBiRWaT.png" alt="海外云主机">                                 
                          </a>
                        </div>
                                                <div>
                          <a href="https://www.ucloudstack.com/?ytag=seo"  rel="nofollow">
                            <img src="https://www.ucloud.cn/yun/data/attach/240506/VEgKnwRX.png" alt="私有云">                                 
                          </a>
                        </div>
                                                <div>
                          <a href="https://www.ucloud.cn/site/active/new/uhybrid.html?ytag=seo#datacenter"  rel="nofollow">
                            <img src="https://www.ucloud.cn/yun/data/attach/240506/Z1o6CMPK.png" alt="服务器托管">                                 
                          </a>
                        </div>
                                                                   
                    
                        
                      </div>
                    </div>
                      
                    </div>                    <!-- banner结束 -->
              
<div class="adhtml">

</div>
                <script>
                $(function(){
                    $.ajax({
                        type: "GET",
                                url:"https://www.ucloud.cn/yun/ad/getad/1.html",
                                cache: false,
                                success: function(text){
                                  $(".adhtml").html(text);
                                }
                        });
                    })
                </script>                </div>              </div>
           </div>
        </div>
      </div> 
    </section>
    <!-- wap拉出按钮 -->
     <div class="site-tree-mobile layui-hide">
      <i class="layui-icon layui-icon-spread-left"></i>
    </div>
    <!-- wap遮罩层 -->
    <div class="site-mobile-shade"></div>
    
       <!--付费阅读 -->
       <div id="payread">
         <div class="layui-form-item">阅读需要支付1元查看</div>  
         <div class="layui-form-item"><button class="btn-right">支付并查看</button></div>     
       </div>
      <script>
      var prei=0;

       
       $(".site-seo-depict pre").each(function(){
          var html=$(this).html().replace("<code>","").replace("</code>","").replace('<code class="javascript hljs" codemark="1">','');
          $(this).attr('data-clipboard-text',html).attr("id","pre"+prei);
          $(this).html("").append("<code>"+html+"</code>");
         prei++;
       })
           $(".site-seo-depict img").each(function(){
             
            if($(this).attr("src").indexOf('data:image/svg+xml')!= -1){
                $(this).remove();
            }
       })
     $("LINK[href*='style-49037e4d27.css']").remove();
       $("LINK[href*='markdown_views-d7a94ec6ab.css']").remove();
layui.use(['jquery', 'layer','code'], function(){
  $("pre").attr("class","layui-code");
      $("pre").attr("lay-title","");
       $("pre").attr("lay-skin","");
  layui.code(); 
       $(".layui-code-h3 a").attr("class","copycode").html("复制代码 ").attr("onclick","copycode(this)");
      
});
function copycode(target){
    var id=$(target).parent().parent().attr("id");
  
                  var clipboard = new ClipboardJS("#"+id);

clipboard.on('success', function(e) {


    e.clearSelection();
    alert("复制成功")
});

clipboard.on('error', function(e) {
    alert("复制失败")
});
}
//$(".site-seo-depict").html($(".site-seo-depict").html().slice(0, -5));
</script>
  <link rel="stylesheet" type="text/css" href="https://www.ucloud.cn/yun/static/js/neweditor/code/styles/tomorrow-night-eighties.css">
    <script src="https://www.ucloud.cn/yun/static/js/neweditor/code/highlight.pack.js" type="text/javascript"></script>
    <script src="https://www.ucloud.cn/yun/static/js/clipboard.js"></script>

<script>hljs.initHighlightingOnLoad();</script>

<script>
    function setcode(){
        var _html='';
    	  document.querySelectorAll('pre code').forEach((block) => {
        	  var _tmptext=$.trim($(block).text());
        	  if(_tmptext!=''){
        		  _html=_html+_tmptext;
        		  console.log(_html);
        	  }
    		 
    		  
    		 
      	  });
    	 

    }

</script>

<script>
function payread(){
  layer.open({
      type: 1,
      title:"付费阅读",
      shadeClose: true,
      content: $('#payread')
    });
}
// 举报
function jupao_tip(){
  layer.open({
      type: 1,
      title:false,
      shadeClose: true,
      content: $('#jubao')
    });

}
$(".getcommentlist").click(function(){
var _id=$(this).attr("dataid");
var _tid=$(this).attr("datatid");
$("#articlecommentlist"+_id).toggleClass("hide");
var flag=$("#articlecommentlist"+_id).attr("dataflag");
if(flag==1){
flag=0;
}else{
flag=1;
//加载评论
loadarticlecommentlist(_id,_tid);
}
$("#articlecommentlist"+_id).attr("dataflag",flag);

})
$(".add-comment-btn").click(function(){
var _id=$(this).attr("dataid");
$(".formcomment"+_id).toggleClass("hide");
})
$(".btn-sendartcomment").click(function(){
var _aid=$(this).attr("dataid");
var _tid=$(this).attr("datatid");
var _content=$.trim($(".commenttext"+_aid).val());
if(_content==''){
alert("评论内容不能为空");
return false;
}
var touid=$("#btnsendcomment"+_aid).attr("touid");
if(touid==null){
touid=0;
}
addarticlecomment(_tid,_aid,_content,touid);
})
 $(".button_agree").click(function(){
 var supportobj = $(this);
         var tid = $(this).attr("id");
         $.ajax({
         type: "GET",
                 url:"https://www.ucloud.cn/yun/index.php?topic/ajaxhassupport/" + tid,
                 cache: false,
                 success: function(hassupport){
                 if (hassupport != '1'){






                         $.ajax({
                         type: "GET",
                                 cache:false,
                                 url: "https://www.ucloud.cn/yun/index.php?topic/ajaxaddsupport/" + tid,
                                 success: function(comments) {

                                 supportobj.find("span").html(comments+"人赞");
                                 }
                         });
                 }else{
                	 alert("您已经赞过");
                 }
                 }
         });
 });
 function attenquestion(_tid,_rs){
    	$.ajax({
    //提交数据的类型 POST GET
    type:"POST",
    //提交的网址
    url:"https://www.ucloud.cn/yun/favorite/topicadd.html",
    //提交的数据
    data:{tid:_tid,rs:_rs},
    //返回数据的格式
    datatype: "json",//"xml", "html", "script", "json", "jsonp", "text".
    //在请求之前调用的函数
    beforeSend:function(){},
    //成功返回之后调用的函数
    success:function(data){
    	var data=eval("("+data+")");
    	console.log(data)
       if(data.code==2000){
    	layer.msg(data.msg,function(){
    	  if(data.rs==1){
    	      //取消收藏
    	      $(".layui-layer-tips").attr("data-tips","收藏文章");
    	      $(".layui-layer-tips").html('<i class="fa fa-heart-o"></i>');
    	  }
    	   if(data.rs==0){
    	      //收藏成功
    	      $(".layui-layer-tips").attr("data-tips","已收藏文章");
    	      $(".layui-layer-tips").html('<i class="fa fa-heart"></i>')
    	  }
    	})
    	 
       }else{
    	layer.msg(data.msg)
       }


    }   ,
    //调用执行后调用的函数
    complete: function(XMLHttpRequest, textStatus){
     	postadopt=true;
    },
    //调用出错执行的函数
    error: function(){
        //请求出错处理
    	postadopt=false;
    }
 });
}
</script>
<footer>
        <div class="layui-container">
            <div class="flex_box_zd">
              <div class="left-footer">
                    <h6><a href="https://www.ucloud.cn/"><img src="https://www.ucloud.cn/yun/static/theme/ukd//images/logo.png" alt="UCloud (优刻得科技股份有限公司)"></a></h6>
                    <p>UCloud (优刻得科技股份有限公司)是中立、安全的云计算服务平台,坚持中立,不涉足客户业务领域。公司自主研发IaaS、PaaS、大数据流通平台、AI服务平台等一系列云计算产品,并深入了解互联网、传统企业在不同场景下的业务需求,提供公有云、混合云、私有云、专有云在内的综合性行业解决方案。</p>
              </div>
              <div class="right-footer layui-hidemd">
                  <ul class="flex_box_zd">
                      <li>
                        <h6>UCloud与云服务</h6>
                         <p><a href="https://www.ucloud.cn/site/about/intro/">公司介绍</a></p>
                         <p><a href="https://zhaopin.ucloud.cn/" >加入我们</a></p>
                         <p><a href="https://www.ucloud.cn/site/ucan/onlineclass/">UCan线上公开课</a></p>
                         <p><a href="https://www.ucloud.cn/site/solutions.html" >行业解决方案</a></p>                                                  <p><a href="https://www.ucloud.cn/site/pro-notice/">产品动态</a></p>
                      </li>
                      <li>
                        <h6>友情链接</h6>                                             <p><a href="https://www.compshare.cn/?ytag=seo">GPU算力平台</a></p>                                             <p><a href="https://www.ucloudstack.com/?ytag=seo">UCloud私有云</a></p>
                                             <p><a href="https://www.surfercloud.com/">SurferCloud</a></p>                                             <p><a href="https://www.uwin-link.com/">工厂仿真软件</a></p>                                             <p><a href="https://pinex.it/">Pinex</a></p>                                             <p><a href="https://www.picpik.ai/zh">AI绘画</a></p>
                                             
                      </li>
                      <li>
                        <h6>社区栏目</h6>
                         <p><a href="https://www.ucloud.cn/yun/column/index.html">专栏文章</a></p>
                     <p><a href="https://www.ucloud.cn/yun/udata/">专题地图</a></p>                      </li>
                      <li>
                        <h6>常见问题</h6>
                         <p><a href="https://www.ucloud.cn/site/ucsafe/notice.html" >安全中心</a></p>
                         <p><a href="https://www.ucloud.cn/site/about/news/recent/" >新闻动态</a></p>
                         <p><a href="https://www.ucloud.cn/site/about/news/report/">媒体动态</a></p>                                                  <p><a href="https://www.ucloud.cn/site/cases.html">客户案例</a></p>                                                
                         <p><a href="https://www.ucloud.cn/site/notice/">公告</a></p>
                      </li>
                      <li>
                          <span><img src="https://static.ucloud.cn/7a4b6983f4b94bcb97380adc5d073865.png" alt="优刻得"></span>
                          <p>扫扫了解更多</p></div>
            </div>
            <div class="copyright">Copyright © 2012-2023 UCloud 优刻得科技股份有限公司<i>|</i><a rel="nofollow" href="http://beian.miit.gov.cn/">沪公网安备 31011002000058号</a><i>|</i><a rel="nofollow" href="http://beian.miit.gov.cn/"></a> 沪ICP备12020087号-3</a><i>|</i> <script type="text/javascript" src="https://gyfk12.kuaishang.cn/bs/ks.j?cI=197688&fI=125915" charset="utf-8"></script>
<script>
var _hmt = _hmt || [];
(function() {
  var hm = document.createElement("script");
  hm.src = "https://hm.baidu.com/hm.js?290c2650b305fc9fff0dbdcafe48b59d";
  var s = document.getElementsByTagName("script")[0]; 
  s.parentNode.insertBefore(hm, s);
})();
</script>
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-DZSMXQ3P9N"></script>
<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());

  gtag('config', 'G-DZSMXQ3P9N');
</script>
<script>
(function(){
var el = document.createElement("script");
el.src = "https://lf1-cdn-tos.bytegoofy.com/goofy/ttzz/push.js?99f50ea166557aed914eb4a66a7a70a4709cbb98a54ecb576877d99556fb4bfc3d72cd14f8a76432df3935ab77ec54f830517b3cb210f7fd334f50ccb772134a";
el.id = "ttzz";
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(el, s);
})(window)
</script></div> 
        </div>
    </footer>
</body>
<script src="https://www.ucloud.cn/yun/static/theme/ukd/js/common.js"></script>
<<script type="text/javascript">
$(".site-seo-depict *,.site-content-answer-body *,.site-body-depict *").css("max-width","100%");
</script>
</html>