【发布时间】:2015-08-13 20:56:19
【问题描述】:
在 React Native 中,有没有办法切换元素的可见性?
例如:
<Text visibility={this.state.isVisible}>Visibility depends on state</Text>
【问题讨论】:
标签: react-native
在 React Native 中,有没有办法切换元素的可见性?
例如:
<Text visibility={this.state.isVisible}>Visibility depends on state</Text>
【问题讨论】:
标签: react-native
这可能很粗糙,但它确实有效。
渲染中
var visibletext = null;
if (this.state.isVisible) {
visibletext = (<Text>Visibility depends on state</Text>);
}
然后,在返回部分下
<View style={styles.container}>
{visibletext}
</View>
【讨论】:
setState 方法更新状态,这将自动重新渲染组件。此外,简单地 not 渲染一个组件(即本例中的 有多种方法可以做到这一点。请参阅 React.js 网站上的 Conditional Rendering 指南,其中解释了不同的选项。
一种简单的方法是使用 && operator 内联:
{this.state.isVisible &&
<Text>Something</Text>
}
请注意,使用条件渲染方法,如果您有(例如)某些视图垂直居中,当文本出现时,这些视图会突然向上或向下移动(为新观点留出空间)。避免这种跳转的另一种方法是更改文本颜色或将文本设置为空字符串:
// Change the text color
<Text style={this.state.isVisible ? {color: 'black'} : {color: 'white'}}>Something</Text>
// Set text to empty string
<Text>{this.state.isVisible ? "Something" : ""}</Text>
更改文本的颜色是确保其他视图在显示文本时不会突然移动的最佳方法,因为文本已经占据了它需要的布局空间。
【讨论】: