我正在尝试在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>
)
})
}
答案 0 :(得分:2)
我认为您可能需要这样做:
constructor(props) {
super(props);
//your code
}
否则this.props
将是未定义的