如何在React Native中获取被点击元素的样式名称和州名?

时间:2018-06-16 07:09:49

标签: react-native

在下面,第一个示例如何检查可点击元素TouchableWithoutFeedback是否具有名为EntryBlock1的样式?

  render() {
    return (
      <TouchableWithoutFeedback style={styles.EntryBlock1} onPress={() => this.CheckIfHasStyles()}>
        <View style={styles.redundantWrapperNumber1}>
          <Text style={styles.redundantWrapperNumber2}>Click To Test For Style</Text>
        </View>
      </TouchableWithoutFeedback>
      <TouchableWithoutFeedback style={styles.EntryBlock2} onPress={() => this.CheckIfHasStyle()}>
        <View style={styles.redundantWrapperNumber1}>
          <Text style={styles.redundantWrapperNumber2}>Click To Test For Style</Text>
        </View>
      </TouchableWithoutFeedback>
    ); // end return
  } // end render

在第二个示例中,如何检查TouchableWithoutFeedback是否具有州名EntryBlock1

  constructor (props) {
    super(props);
    this.state = {
      EntryBlock1: [styles.entryBlockButton, styles.entryBlockButtonMin],
      EntryBlock2: [styles.entryBlockButton, styles.entryBlockButtonMax],
    }
  }

  render() {
    return (
      <TouchableWithoutFeedback style={this.state.EntryBlock1} onPress={() => this.CheckIfHasStateName()}>
        <View style={styles.redundantWrapperNumber1}>
          <Text style={styles.redundantWrapperNumber2}>Click To Test For Style</Text>
        </View>
      </TouchableWithoutFeedback>
    ); // end return

我尝试过什么

以下各行的不同内容..

  CheckIfHasStyles =()=> {
    var object = this.state;
    var stringifiedObject = JSON.stringify(object);
    var slicedObject = stringifiedObject.slice(2, 13);
    if (slicedObject === 'EntryBlock1') {
      alert('success');
    } else {
      alert('failure');
    }
  }

..它实际上适用于一个非常具体的例子,但是当我有多个州名时,因为this.state将所有这些都放在一个对象中,而不仅仅是点击元素的状态。

注意:我的问题仅仅是获取属性及其值。它是帮助我开发一种在元素上切换样式的样式,但我只是在这些答案中寻找属性的东西,因为我想在可能的情况下使用属性,而不仅仅是在将来切换。

1 个答案:

答案 0 :(得分:0)

你可以直接将它作为参数传递给你的函数:

     render() {
    return (
      <TouchableWithoutFeedback style={styles.EntryBlock1} onPress={() => this.CheckIfHasStyles('EntryBlock1')}>
        <View style={styles.redundantWrapperNumber1}>
          <Text style={styles.redundantWrapperNumber2}>Click To Test For Style</Text>
        </View>
      </TouchableWithoutFeedback>
      <TouchableWithoutFeedback style={styles.EntryBlock2} onPress={() => this.CheckIfHasStyle('EntryBlock2')}>
        <View style={styles.redundantWrapperNumber1}>
          <Text style={styles.redundantWrapperNumber2}>Click To Test For Style</Text>
        </View>
      </TouchableWithoutFeedback>
    ); 
  } 

并检查您是否在功能中接收任何参数并执行您想要的操作 基于If-else条件