React Native - 访问map函数中的组件状态变量

时间:2017-08-03 22:16:16

标签: reactjs react-native

我正在尝试在map函数中访问组件的状态属性。我绑定我的renderInputControl函数,并使用ES6语法映射我的输入。我还在我的map函数之外放置了一个调试器,并且能够访问我的状态,但是当将调试器放在map函数中时,我得到一个未定义的错误并且丢失了范围。我错误地绑定了我的功能吗?

constructor() {
    super()

    this.state = {
      currentSelection: '',
      currentInputValue: '',
    }

    this.renderInputControl = this.renderInputControl.bind(this)
    this.handleOnPress = this.handleOnPress.bind(this)
  }

renderInputControl() {
    // debugger
    return this.props.input.options_labels_en.map((label, index) => {
      let numberSign = '  '
      if (input.show_points == true) {
        if (optionValues[index] > 0) {
          numberSign = '+'
        } else if (optionValues[index] < 0) {
          numberSign = ''
        }
      }
      // debugger
      return (
        <TouchableHighlight
          onPress={() => this.handleOnPress(input.name, label, optionValues[index])}
          key={index}
          >
          <View style={this.state.currentSelection == label ? test.selectedInputControl : test.unselectedInputControl}>
            <View style={{flexDirection: 'row'}}>
              <Text style={[{flex: 9}, this.state.currentSelection == label ? test.selectedText : test.unselectedText]}>{label}</Text>
              <Text style={[{flex: 1, alignSelf: 'center', textAlign: 'center'}, this.state.currentSelection == label ? test.selectedText : test.unselectedText]}>{`${numberSign}${optionValues[index]}`}</Text>
            </View>
          </View>
        </TouchableHighlight>

      )
    })
  }

1 个答案:

答案 0 :(得分:2)

我认为您可能需要这样做:

constructor(props) {
    super(props);
    //your code
}

否则this.props将是未定义的