我正在尝试使用条件渲染(在这个特定的例子中),这将允许我做出如下的东西:
<Image
source={{ uri: "https://images4.alphacoders.com/221/221716.jpg" }}
style={this.state.isLoaded ? styles.loaded : { display: "none" }}
onLoadEnd={() => {
console.log("test"), this.setState({ isLoaded: true });
}}
/>
主要问题是,当使用display: none
样式时,React Native似乎无法使用其内部生命周期函数,因此不会调用onLoadEnd
,也不会记录任何内容。
我不知道在使用display
风格的 prop 时如何遇到这个问题
3条答案
按热度按时间pftdvrlh1#
TL;TR
**
{ transform: [{ scale: 0 }] }
**是一个很好的解决方案恕我直言
你关于生命周期/渲染的问题似乎是合理的。
既然我不能给予你答案...
我最近在尝试使用
{ display: 'none' }
时遇到了一些奇怪的bug(当将显示恢复为'flex'
时,一些子组件仍然没有呈现)。或
{ width: 0, height: 0 }
(当返回到'flex'
时,布局未恢复)。不用说,通过一些常见的技巧(
return enabled && <MyComponent {...}/>
)避免渲染并不是解决方案(安装和卸载组件需要大量的计算,这会破坏动画的帧率)。当我希望在动画期间隐藏组件而不中断帧率时,我发现
{ transform: [{ scale: 0 }] }
是最好的解决方案:alignSelf: 'center'
仍然有效)我的实现类似于:
5vf7fwbs2#
下一次,如果你设置一个小吃来演示你的问题,那将是超级酷的。
这个模式对你有用...
我创建了一个demo on snack for you
使用
display: none
更新kokeuurv3#
我尝试了各种方法,但最后
style: {height: 0, width: 0, opacity: 0}
对我起作用了。