reactjs - 无显示 -> 在 reactjs styled-components 中使用状态显示
问题描述
我试图构建模态组件。我的方法正在更改display: none
为display: block
当状态可见改变时。
这由函数buildTopicList(topicDummy)给出的嵌套标签,
但是当我改变 props visible of时, ```<TopicBox>
的返回值buildTopicList(topicDummy) is gone and no more contents inside
为了解决这个问题,使用
[topicList, setTopicList] = useState(buildTopicList(topicDummy))` and replace
了 buildTopicList(topicDummy) width
topicList```。
<TopicBox></TopicBox>
我的问题是,当我只使用 a 时,为什么当状态改变时里面的内容消失buildTopicList(topicDummy)
了{topicList}
?
请看下面的代码。
export const TopicBox = styled.div<{
visible: boolean
}>`
display: ${p => p.visible ? 'initial' : 'none'};
border: 1px solid rgba(0,0,0,.15);
border-radius: 16px;
position: absolute;
top: 56px;
background-color: ${p=>p.theme.colors.white};
max-width: 528px;
max-height:216px;
overflow-y: auto;
`;
///this works
const [topicList, setTopicList ] = useState(buildTopicList(topicDummy));
const toggleTopicList = () => {
setVisible((visible) => !visible);
}
return
...
<TopicButton
onClick={toggleTopicList}
>
<Hamburger/>
<TopicTitle>Topic</TopicTitle>
</TopicButton>
<TopicBox
visible={visible}
ref={topicRef}
>
{topicList}
</TopicBox>
//this doesn't work
const toggleTopicList = () => {
setVisible((visible) => !visible);
}
return
...
<TopicButton
onClick={toggleTopicList}
>
<Hamburger/>
<TopicTitle>Topic</TopicTitle>
</TopicButton>
<TopicBox
visible={visible}
ref={topicRef}
>
{buildTopicList(topicDummy)}
</TopicBox>
解决方案
试试这样:
display: ${({ visible }) => visible ? 'initial' : 'none'};
推荐阅读
- shell - JSCH 如何在 shell 中获取服务器答案,以便验证远程解锁 luks 分区的命令
- css - 插件样式表中的 CSS 颜色 (Genesis Enews)
- r - 在 Base R 中使用 file 和 cat 创建日志文件
- vba - 如何绕过使用 Excel VBA 回复邮件时生成错误的 Outlook 项目?
- java - Firestore 需要双嵌套表
- django - django runserver 不显示启动开发服务器消息
- vuejs2 - How to run a function with a delay from inside axios then
- java - 爪哇。无法从导入 java.security.Signature 导入 SHA256withRSA 签名
- leaflet - 无法让 dashArray 在 Leaflet 1.0.3 中的画布上工作
- redis - 如何获取 Redis 中键集的大小(以字节为单位)?