javascript - 使用隐藏属性与有条件地渲染组件
问题描述
我最近发现了一种在 JSX 中有条件地渲染组件的替代方法,即使用hidden
HTML 属性。
例子
function Parent() {
return {!hideChild && <Child />}
}
对比
function Parent() {
return <Child hidden={hideChild} />
}
function Child({ hidden }) {
return (
<div hidden={hidden} >
//my content
</div>
)
}
到目前为止,我在使用hidden
. 这么说,隐藏的页面上有很多 HTML 有什么缺点吗?
对我来说,当我想要保留组件状态并具有切换组件 UI 可见性的功能时,这种方法非常有用。
这是不好的做法吗?我们应该有条件地渲染组件吗?
解决方案
不同的是,在使用条件渲染时,如果条件失败,条件渲染UI里面的逻辑将不会被执行。
但是使用 hidden 属性会执行逻辑,但只会隐藏 UI。
例子:
import React from 'react';
const A = () => {
console.log('A rendrerd');
return <h1>A</h1>;
};
const B = ({ hidden }) => {
console.log('B rendrerd');
return <h1 hidden={hidden}>B</h1>;
};
const Test = () => {
return (
<div>
{false && <A />}
<B hidden={true} />
</div>
);
};
export default Test;
A 永远不会调用它的console.log
语句。B 是隐藏的,但它会记录B rendered
。
推荐阅读
- github - 是否可以在公共 git 存储库中提出机密问题?
- swift - Xcode - 依赖 PickerView 选择
- javascript - revokeObjectURL() 在 Safari 中不起作用?
- android - 在 Vulkan 中显示来自 ImageReader 的纹理
- c++ - 在程序中使用某个可执行文件的返回值
- java - 如何使用模拟单元测试覆盖静态字段?
- javascript - 导入后如何设置 React 组件的样式
- python - 使用 NLP - Spacy Matcher 提取电子邮件,然后对其进行加密和解密
- ios - 在换行符后附加字符串
- python - Pandas:如何使用生成的 MultiIndex 在另一列中插入 DataFrame 列?