React组件中`${x && 'x'}`模板字符串语法解析求助
拆解
${loading && 'yellow'} 的工作原理 这是JavaScript逻辑与运算符和模板字符串的组合用法,拆开来就很好理解:
1. 逻辑与(&&)的短路特性
JS里的&&是短路逻辑,规则很简单:
- 如果左边的表达式是假值(比如
false、空字符串、null这类),直接返回左边的值,右边代码不执行 - 如果左边是真值(比如
true、非空字符串、非0数字),就返回右边的表达式结果
放到你的代码里:
- 当
loading是false时,loading && 'yellow'的结果是false - 当
loading是true时,结果就是'yellow'
2. 模板字符串(${})的作用
用反引号()包裹的模板字符串,会把${}`里的表达式结果转换成字符串:
- 上面得到
false的话,模板字符串会把它转成"false"这个字符串 - 得到
'yellow'的话,结果就是"yellow"
实际在React里的效果
对应你的ListItemButton组件:
loading为false时,最终color的值是"false"——但CSS不认识这个颜色值,浏览器会直接忽略这个样式,元素用默认颜色loading为true时,color是"yellow",元素会显示黄色
更严谨的写法建议
如果不想生成color: "false"这种无效的CSS属性,可以改成三元运算符的写法:
<ListItemButton sx={{ color: loading ? 'yellow' : undefined }}>
这样当loading为false时,color是undefined,不会在DOM里生成无效的样式属性。
内容的提问来源于stack exchange,提问作者mtpog093
相关产品推荐
相关产品推荐

