javascript – 在模板文字中定义一个函数
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – 在模板文字中定义一个函数,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1509字,纯文字阅读大概需要3分钟。
内容图文
我正在使用styled-components作为React样式的解决方案.他们有一个很好的方法,使用模板文字插入CSS.模板文字传递组件的道具,以便您可以执行以下操作:
const PasswordsMatchMessage = styled.div`
background: ${props => props.isMatching ? 'green' : 'red'};
`
结果是一个组件,它根据isMatching的值呈现带有绿色或红色背景的div标签.以上将通过JSX使用,如下所示:
<PasswordsMatchMessage isMatching={doPasswordsMatch}>...</PasswordsMatchMessage>
每当props的值改变时,该字符串将被重新插值.这终于让我想到了我的问题:
每次插入模板文字时,是否都会重新定义模板文字中定义的箭头函数?
如果是这样,那么我可以考虑在模板文字之外创建函数并且只是传递它们,例如
const PasswordsMatchMessage = styled.div`
background: ${isMatchingFn};
`
解决方法:
是的,每次插入模板文字时,它都会定义一个新版本的函数.您可以通过定义自己的跟踪先前值的标记来验证.
var previous;
function trackInterpolations(literalParts, interpolated) {
if (interpolated === previous) {
answer = 'Got the same function';
} else {
answer = 'Got a different function';
}
previous = interpolated;
return answer;
}
然后跑
trackInterpolations`background: ${props => props.isMatching ? 'green' : 'red'};`
几次,并注意到它总是评估为“有不同的功能”,表明它每次都在创建一个新功能.
与此版本相比:
trackInterpolations`background: ${isMatchingFn};`
第一次运行时,它将评估为“获得不同的功能”(因为它还没有看到isMatchingFn),但是如果再评估它几次,它将始终导致“获得相同的功能”,因为函数引用正在重用.
在这种情况下,我不会过分担心性能影响,除非你真的注意到减速,否则请使用更具可读性的东西.与重新渲染div相比,创建新函数的开销不太可能很高.
内容总结
以上是互联网集市为您收集整理的javascript – 在模板文字中定义一个函数全部内容,希望文章能够帮你解决javascript – 在模板文字中定义一个函数所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。