【发布时间】:2020-06-10 08:39:23
【问题描述】:
以下是学习在 react native 中简单地更改元素 onPress 的样式的第一次尝试。精通网络语言我觉得很难,因为它不是那么简单。
由于未知原因,该元素需要单击两次才能执行。
export class NavTabItem extends React.Component {
constructor(props) {
super(props);
this.state = {
active: false
}
this.NavTabAction = this.NavTabAction.bind(this)
}
NavTabAction = (elem) => {
elem.setState({active: !elem.state.active})
}
render() {
return (
<TouchableOpacity
style={this.state.active ? styles.NavTabItemSelected : styles.NavTabItem}
onPress={()=> {
this.NavTabAction(this)
}}>
<View style={styles.NavTabIcon} />
<Text style={styles.NavTabLabel}>{this.props.children}</Text>
</TouchableOpacity>
);
}
}
其他问题:
我还没有弄清楚如何在单击时将父级下的其他元素的活动状态设置为 false。
另外,有没有一种简单的方法来影响子元素的样式,就像 web.xml 一样。目前我看不到父样式通过选择器影响子元素的方法,就像你可以使用 CSS 一样
例如。一个样式表,上面写着NavTabItemSelected Text :{ // active style for <Text> }
【问题讨论】:
-
明确什么需要点击两次。预期的结果是什么?元素不执行。第一次和第二次点击会调用哪些函数?
-
@Max 任何点击都会触发 NavTabAction 函数,但是在第二次点击之前状态不会改变。
-
是否需要点击 2 次?你能准备一份世博小吃看看吗?
-
setState是异步的reactjs.org/docs/react-component.html#setstate 这就是为什么我在渲染@RobinKnight 中专门询问console.logs -
根据提供的代码,如果 this.state.active 是真实的,它应该应用样式。NavTabItemSelected 样式,所以我会说检查你的样式.. 我从来没有负责三元运算符不工作跨度>
标签: react-native styles onpress