在渲染函数中未定义的state属性

时间:2017-02-16 14:26:40

标签: react-native

在我的一个视图的渲染函数中,我试图将视图的不透明度绑定到一个状态属性:this.state.infoOpacity。

这是一个错误“未定义不是一个对象(评估'this.state.infoOpacity')”

任何指导都会有所帮助。

export default class BookView extends Component
{
  constructor(props) {
    super(props);
    this.state = {
      hideInfo:false,
      infoOpacity:0.80,
      swiperWidth:Dimensions.get('window').width,
      swiperHeight:Dimensions.get('window').height
    };
  }

  render() {
    pages.forEach(function(ranPage){
      photoViews.push(
        <View key={ranPage.letter} style={{width: Dimensions.get('window').width, height: Dimensions.get('window').height}}>
            <View style={[styles.meow,{opacity: this.state.infoOpacity}]}>
              <Text style={styles.text}>{ranPage.name}</Text>
              <Text style={styles.text}>{ranPage.phonetic}</Text>
              <Text style={styles.text2}>{ranPage.description}</Text>
            </View>
        </View>
      )
    });


    return (
      <View style={{flex:1}}>
        <Swiper showsButtons={false} style={{backgroundColor:'#000'}} width={this.state.swiperWidth} height={this.state.swiperHeight}>
            {photoViews}
        </Swiper>
      </View>
    );
  }
}

1 个答案:

答案 0 :(得分:2)

forEach函数中的上下文已更改。使用箭头功能来解决您的问题。而不是

pages.forEach(function(ranPage){ ... });

写这个

pages.forEach((ranPage) => { ... });