“ null不是对象(正在评估'this.state.array')”

时间:2019-10-20 15:45:09

标签: javascript react-native

一旦按钮被按下,我试图动态添加View组件和一些包含数组的文本,并且出现此“ null不是对象”错误

我尝试关注其他一些帖子,但实际上都没有。我尝试遵循以下代码:Programmatically add a component in React Native

为了动态添加该View组件,但这给了我标题错误。

这是我的代码:

import React, { Component } from 'react';
import {
  SafeAreaView,
  StyleSheet,
  ScrollView,
  View,
  Text,
  StatusBar,
} from 'react-native';

import {
  Header,
  Button,
} from 'react-native-elements';

let index = 0;
let limit = 6;
let numbersCount = 0;
let maxNumber = 49;
let minNumber = 1;
let numbers = [];


export default class App extends Component {

  getInitialState() {
    return { array: [] }
  }
  _onPressOut() {
    let temp = index ++
    this.state.array.push(temp)
    this.setState({
        array: this.state.array
    })
  }

  lotoNumber() {
    for (let numbersCount = 0; numbersCount < limit + 1; numbersCount++) {
      numbers.push(Math.floor(Math.random() * (maxNumber - minNumber + 1))) + minNumber;
    }
    return numbers = numbers.join(", ");
  };

  render() {
    let Arr = this.state.array.map((a, i) => {
      return <View style={styles.sectionContainer}><Text style={styles.sectionTitle}>{numbers}</Text><Text style={styles.sectionDescription}>Acestea sunt numerele tale. Te rugam sa astepti pana DUMINICA la extragere sau LUNI cand rezultatele vor fi publice pe internet</Text></View>
    })

    return (
    <>
      <StatusBar backgroundColor="green" barStyle="light-content" translucent={true} />
      <SafeAreaView>
      <Header
      placement="center"
      centerComponent={{ text: 'Numere Loto', style: { color: '#fff', fontSize: 23 } }}
      containerStyle={{
        backgroundColor: 'green',
        justifyContent: 'center',
        }}
      />

          <View style={styles.body}>
            <View style={styles.sectionContainer}>
              <Text style={styles.sectionTitle}>Introducere</Text>
              <Text style={styles.sectionDescription}>
              Salut! Bun venit pe aplicatia <Text style={styles.highlight}>Numere Loto</Text>. Aceasta aplicatie
              este destinata jucatorilor la loto si vor sa bage variante de numere aleatorii pe bilet!
              </Text>
            </View>
            <View style={styles.sectionContainer}>
            </View>
            <View style={styles.sectionContainer}>
              <Text style={styles.sectionTitle}>Cum se foloseste aplicatia?</Text>
              <Text style={styles.sectionDescription}>
                Pentru a genera numere, apasa pe butonul de mai jos si asteapta putin pentru a vedea ce numere ai luat, apoi le poti
                baga pe bilet si sa astepti pana DUMINICA cand se va face extragerea sau pana LUNI cand rezultatele vor fi afisate pe
                internet.
              </Text>
            </View>
            { Arr }
            <View style={styles.sectionContainer}>
            <Button
            title="Solid Button"
            buttonStyle={{
              backgroundColor: "green"
              }}
            onPress={ () => this._onPressOut() }
            />
            </View>
          </View>
      </SafeAreaView>
    </>
    );
  }
}




const styles = StyleSheet.create({
  body: {
    backgroundColor: '#ffffff',
  },
  sectionContainer: {
    marginTop: 32,
    paddingHorizontal: 24,
  },
  sectionTitle: {
    fontSize: 24,
    fontWeight: '600',
    color: '#000000',
  },
  sectionDescription: {
    marginTop: 8,
    fontSize: 18,
    fontWeight: '400',
    color: '#a9a9a9',
  },
  highlight: {
    fontWeight: '700',
    color: '#464646',
  },
  footer: {
    color: '#a9a9a9',
    fontSize: 12,
    fontWeight: '600',
    padding: 4,
    paddingRight: 12,
    textAlign: 'right',
  },
});

它应该输出一些随机数,如在lotoNumber()函数中所见。我是本机新手,所以如果我在代码中犯了其他任何错误,请纠正我:)

1 个答案:

答案 0 :(得分:1)

对于ES6类,状态最初是在构造函数中设置的:

Can't exec "qemu": No such file or directory at ./pintos line 923.
command failed

在此处查看文档:{​​{3}}