Javascript React:Immutable.js vs JSON.parse(JSON.stringify())
目前我遇到了Javascript React:Immutable.js vs JSON.parse(JSON.stringify()),javascript,json,reactjs,immutable.js,stringify,Javascript,Json,Reactjs,Immutable.js,Stringify,目前我遇到了React'shouldComponentUpdate'方法的问题-我注意到我通过链接将参数传递给该函数。因此,我不能使用任何优化,因为我有nextProps和this.props作为同一个东西 我的问题是——我应该如何说服我的同事使用不可变的数据结构来传递,而不是仅仅使用JSON.parse(JSON.stringify)复制对象?是否有任何基准比较这种方法来解决问题?在Chrome中,stringify/parse似乎比其他方法更快,而Immutable.js速度最慢()。我对这
React'shouldComponentUpdate'
方法的问题-我注意到我通过链接将参数传递给该函数。因此,我不能使用任何优化,因为我有nextProps和this.props作为同一个东西
我的问题是——我应该如何说服我的同事使用不可变的数据结构来传递,而不是仅仅使用
JSON.parse(JSON.stringify)
复制对象?是否有任何基准比较这种方法来解决问题?在Chrome中,stringify/parse似乎比其他方法更快,而Immutable.js速度最慢()。我对这个结果感到气馁,但我发现并最终明白,不可变肯定不是关于速度,而是关于健壮的API,再加上Redux,它真的很耀眼。
此外,我还应该强调Reddit讨论中的这一思想:
别忘了这是JavaScript,每个浏览器都有多个层
关于优化——这意味着今天的快或慢可能是
明天是慢还是快(在合理范围内)
嗯,对你的同事来说还不够有说服力?!!老实说,我希望有人会抱怨“复制太多”的不可变数据,但如果你的同事已经做了太多的
JSON.parse(JSON.stringify)
,那么他/她的抱怨是什么呢?@niceman你能不能在react docs中指出,解决这个问题的首选方法是使用扩展字符,Object.assign或JSON.parse(JSON.stringify())?这会很有帮助。这在官方教程中有:通过字符串化然后解析来复制对象是没有意义的;这肯定比深度复制要慢,尽管我还没有进行基准测试。为什么不在jsperf或类似的基础上进行基准测试呢?这个问题的答案取决于应用程序的具体情况,并且基本上是基于观点的。如果你的应用程序状态像10-20个布尔标志,那么扩展操作就完美了。另一方面,如果您在其中使用循环引用深度嵌套(比如像图形一样)结构,那么stringify/parse就会失败。