javascript - React Native,如何删除旧样式并添加新样式

标签 javascript reactjs react-native stylesheet

我想在 View 上删除旧样式(Hidden)并在 onPress 时设置新样式(InputContainer)被称为。

此源添加了新样式,但如何删除旧样式?

showNext = (id) => {
  this.refs["block-" + id].setNativeProps({
    style: styles.Hidden
  });
  id++;
  this.refs["block-" + id].setNativeProps({
    style: styles.InputContainer
  });
}

render() {
  return (
    <KeyboardAvoidingView style={[styles.Container]}>

      <View style={styles.InputContainer} id="block-1" ref="block-1">       
        <Text>Block 1</Text>
        <DefaultButton onPress={() => this.showNext(1)}>Ok</DefaultButton>
      </View>

      <View style={styles.Hidden} id="block-2" ref="block-2">       
        <Text>Block 2</Text>
      </View>

    </KeyboardAvoidingView>
  )
}

样式

const styles = StyleSheet.create({
  Container: {
    flex: 1,
    justifyContent: 'center',
    alignItems: 'center'
  },
  Hidden: {
    display: "none"
  },
  InputContainer: {
    width: "80%"
  }
});

最佳答案

我认为你可以做一些更简单的事情

state = {
  pressed: false
}


showNext = () => {
  this.setState({pressed: !this.state.pressed})
}

render() {
  return (
    <KeyboardAvoidingView style={[styles.Container]}>

      <View style={this.state.pressed ? styles.InputContainer : styles.Hidden} id="block-1" ref="block-1">       
        <Text>Block 1</Text>
        <DefaultButton onPress={showNext}>Ok</DefaultButton>
      </View>

      <View style={styles.Hidden} id="block-2" ref="block-2">       
        <Text>Block 2</Text>
      </View>

    </KeyboardAvoidingView>
  )
}

它也应该动态工作:

showNext = (id) => {
  this.setState({[`blockPressed-${id}`]: !this.state[`blockPressed-${id}`]})
}

 <View style={this.state.blockPressed-1 ? stlyes.InputContainer : styles.Hidden}>       
    <Text>Block 1</Text>
    <DefaultButton onPress={() => showNext(1)}>Ok</DefaultButton>
  </View>

关于javascript - React Native,如何删除旧样式并添加新样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51190642/

相关文章:

javascript - 如何清除 react native webview cookies?

javascript - 如何使用 JavaScript 处理 COM 对象?

javascript - 创建 Youtube 背景时出现 JS 错误

reactjs - 使用 React 在 Mapbox GL 中自定义标记

reactjs - useContext() 不应该只用于低频率更新吗? (mobx-react-lite)

React-native expo 项目 GoogleLogin 缺少对以下 URL 方案的支持

firebase - 我可以使用 firebase 和 react-native 验证电话号码吗?

javascript - 在字符串中执行变量

javascript - 如何使可重用导航栏的文本内容包含在所有页面中以反射(reflect)

javascript - Electron:从 main.js 更改 React 组件状态