undefined不是对象(评估'_this2.onRadioPressed')

时间:2017-01-15 02:18:24

标签: react-native

我正在使用我的组件构建单选按钮,按钮构建正常,但onPress不工作。单击单选按钮,我在标题中收到错误。我怀疑,根据错误,“这个”不是我认为的那样。任何帮助表示赞赏。这是相关的代码:

let radio_props = [
        {label: 'forward', value: 0 },
        {label: 'back', value: 1 }
    ];

<RadioBtn
    radioGroupLabel={'Main Label'}
    radioLabels={radio_props}
    style={styles.radioElement}>
</RadioBtn>

然后在我的RadioBtn.js文件中......

  

onRadioPressed =(val)=&gt; {           console.log('VAL:',val);           this.setState({了selectedValue:VAL});       };

renderRadios(obj, i) {
    console.log('OBJ:', obj);
  return (
      <View style={styles.firstRadioContainer}>
          <TouchableOpacity
              onPress={(value, index) => {
                  this.onRadioPressed(obj.value)
              }}
              underlayColor='#f1c40f'>
              <Text value={obj.value} style={styles.radio}>{obj.label}</Text>
          </TouchableOpacity>
      </View>
  )
};

render() {

    let renderedRadios = this.props.radioLabels.map(this.renderRadios);

    return (
        <View>
            <View style={styles.radioLabelContainer}>
                <Text style={styles.radioLabel}>{this.props.radioGroupLabel}</Text>
            </View>
            <View style={styles.radioGrp}>
                {renderedRadios}
            </View>
        </View>
    );
};

1 个答案:

答案 0 :(得分:0)

你是对的,renderRadios方法中的this不再指向RadioBtn类,因为你在数组的map方法中调用了它。

尝试使用arrow function expression更改为以下内容:

let renderedRadios = this.props.radioLabels.map((o, i) => this.renderRadios(o, i));