草庐IT

反应:不变。

程序员大本营 2024-04-07 原文

目前我遇到了问题 React 'shouldComponentUpdate' 方法 - 我注意到我通过链接将参数传递给该功能。因此,我无法使用任何优化,因为我有NextProps和This.props作为同一件事。

我的问题是 - 我应该如何与我的同事说服他使用不变的数据结构来传递,而只是使用对象复制对象 JSON.parse(JSON.stringify)?是否有任何基准可以比较解决问题的方法?

看答案

看来Stringify/Parse在Chrome和Inmable.js中的速度比其他速度快(JS最慢)(JSPERF)。我对这个结果感到沮丧,但我发现 这个主题在reddit上 最后我明白了 不可变的绝对不是关于速度,而是关于稳健的API 与Redux夫妇,它确实发光了。我也应该从尖锐的reddit讨论中强调这种想法:

别忘了这是JavaScript,每个浏览器都有多个优化层 - 这意味着今天快或慢的东西可能是缓慢或快速的,明天(在理性之内)

有关反应:不变。的更多相关文章

  1. Ruby 数组 - 如何使值在 nil 值上保持不变 - 2

    我正在处理一系列midi音高,看起来像这样......pitches=[60,nil,nil,nil,67,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil]在这种情况下,索引1、2和3上的间距仍然是60。索引4之后,音高仍然是67。如何编写一个方法来识别先前的非零值?目前我能想到的唯一方法看起来有点笨拙:defpitch_at_step(pitches,step)ifpitches.any?x=pitches[step]

  2. 不变之“DAO” - 2

    加州意识形态的先知们认为,只有自由市场和全球通信的控制论流和混沌漩涡才能决定未来。因此,政治辩论是一种浪费。作为自由主义者,他们断言由民主政府所调解的人民意志是一种危险的异端邪说,它妨碍了自然而有效地积累财产的自由。作为技术决定论者,他们相信人类社会和情感纽带阻碍了机器的有效进化。放弃了民主和社会团结,加州意识形态梦想着一个数字天堂,只由自由精神人格者栖居着。——安迪·卡梅伦和理查德·巴布鲁克,“加州意识形态”随着全球社会的兴起,我们正在经历的混乱中,声誉已经失去了很多意义。随着旧机构的倒台,在垂死的领域中的人们有一种甩卖心态,他们利用前几代人建立的声誉获利。由于我们的政治制度失败,政客们表现

  3. ruby - Nokogiri 保持 HTML 实体不变 - 2

    我希望Nokogiri保持HTML实体不变,但它似乎正在将实体转换为实际符号。例如:Nokogiri::HTML.fragment('®').to_s结果:"®"似乎没有任何东西可以将原始HTML返回给我。.inner_html、.text、.content方法都返回'®'而不是'®'有没有办法让Nokogiri保持这些HTML实体不变?我已经搜索过stackoverflow并找到了类似的问题,但没有一个与这个问题完全相同。 最佳答案 这不是一个理想的答案,但您可以通过设置允许的编码来强制它生成实体(如果不是好听的名

  4. javascript - Three.js 将对象添加到组中但保持全局位置/旋转/比例不变 - 2

    我想将一个对象从一个组(或世界/场景)移动到另一个组,但要保持其全局转换不变。基本上,我不想看到对象发生变化。基本上,是这样的://storecurrentworldtransformationvarorigWorldMatrix=myObject.matrixWorld.clone();//moveobjecttoagroup(thatispositionedandrotatedarbitrarily)someGroup.add(myObject);//restorepreviousworldtransformationmyObject.matrixWorld.copy(origWo

  5. javascript - React-Redux/Jest 不变违规 : Could not find "store" - 2

    我设置了一个简单的测试文件,几乎与create-react-app使用的文件相同:App.test.jsimportReactfrom'react';importReactDOMfrom'react-dom';import{App}from'./App';it('renderswithoutcrashing',()=>{constdiv=document.createElement('div');ReactDOM.render(,div);});当我运行yarntest我不断收到此错误消息:InvariantViolation:Couldnotfind"store"ineitherth

  6. javascript - angular ng-class对点击没有反应 - 2

    我正在尝试使用ng-class并将一个类绑定(bind)到一个表达式,这样我就可以对表达式绑定(bind)进行单元测试。但是,我似乎遗漏了什么。按钮:addinterface应该折叠和展开的面板:被触发的函数$scope.onAddInterface=function(){$scope.showCreateNewInterfacePanel=true;}无论如何点击链接没有任何反应。我错过了什么吗? 最佳答案 我不确定这是否是您真正定义$scope.onAddInterface函数的方式,或者它是否只是一个示例...不过您应该这样做

  7. javascript - 将第一个对象推到 javascript 数组中的最后一个,保持所有其他值不变 - 2

    我有以下JavaScript数组:vardays=[{"day":"sunday","morning":"geschlossen",},{"day":"monday","morning":"geschlossen",},{"day":"tuesday","morning":"geschlossen",},{"day":"wenesday","morning":"geschlossen",},{"day":"thursday","morning":"16:30-19:00Uhr",},{"day":"friday","morning":"09:00-18:00Uhr",},{"day":

  8. javascript - 在 MVC 路由之上构建一个具有反应的 SPA - 2

    我有一个API,其路由由MVC管理。最重要的是,我想用React构建一个SPA。但是,无法访问我在React应用程序内部构建的路由,我从ISS收到404,这里是我的代码的stub。exportdefaultclassLayoutextendsReact.Component{render(){}当我在没有后端的情况下独立执行此代码时,它可以完美运行。有没有办法告诉MVC呈现设置url的react路由,比方说“/app/*”。提前致谢。 最佳答案 正如我在评论中提到的,我可能有适合您需求的解决方案。此解决方案需要一个MVCControl

  9. javascript - 在调整大小的容器中重新排列网格元素,保持一个图 block 不变 - 2

    我有一个网格,它被设计成固定的宽度和高度。请参见下图。此网格必须适用于所有屏幕尺寸,同时使网格中的元素保持在相同的位置。我的代码目前根据设计的原始宽度/高度调整这些元素的大小,并使其适应新的宽度/高度。尽管在下面的示例中它们没有正确定位,但计算确实有效。我遇到的困难是,我需要将504x504的中心网格图block设为静态,并考虑到这一点调整其他图block。目前所有元素,包括中间的调整,我只想停止调整中间的元素,而其他元素则删除/添加差异到它们的宽度/高度。这很难解释,如果我可以添加更多详细信息,请告诉我。constinitalWidth=1043;constinitialHeight

  10. javascript - 如何检查 ES6 "variable"是否不变? - 2

    有谁知道一些技巧如何做到这一点?我尝试使用try-catch:"usestrict";consta=20;varisConst=false;try{vartemp=a;a=a+1;a=temp;}catch(e){isConst=true;}但不幸的是,它只能在“严格”模式下工作。如果不使用“usestrict”,它会静默执行所有语句,而不会修改a。此外,我无法将此代码包装到一些方便的函数中(例如isConstant(someConst)),因为我将传递给该函数的任何参数都将是一个新变量。所以有人知道如何创建isConstant()函数吗? 最佳答案

随机推荐