反应原生为什么我的状态未定义

时间:2017-11-08 11:53:59

标签: javascript react-native

我开始学习反应原生,有一些我无法理解的东西。这是我的档案:

import React from 'react';
import { StyleSheet, View, Text, TouchableOpacity } from 'react-native';
import SaladsList from './SaladsList';
import salotos from '../Classes/Salads';

export default class SaladsContainer extends React.Component {
constructor(props) {
  super(props);
    this.state = { salads: salotos,
                   SaladsDisplayState: true
             };
    this.changeState = this.changeState.bind(this);
  }
   changeState() {
      /* if (this.state.SaladsDisplayState === false) {
       this.setState.SaladsDisplayState = true;
      } else if (this.state.saladsDisplayState === true) {
        this.setState.SaladsDisplayState = false;
      }
      console.log(this.state.saladsDisplayState);
      */
      console.log('Veikia funkcija');
      console.log(this.state.salads);
      }
    renderSaladsList() {
      if (this.state.SaladsDisplayState) {
    return this.state.salads.map(salad => <Text style={Styles.saladsText}>{salad.Name}</Text>);
  } else {
    return <TouchableOpacity onPress={this.changeState()}><Text style={Styles.saladsText}>Salotos</Text></TouchableOpacity>
  }
  }
  render() {
    console.log(this.state.SaladsDisplayState);
    return (
      <View style={Styles.saladsContainer}>
      {this.renderSaladsList()}
      </View>
    );
  }
}

1.为什么当我按下this.state.SaladsDisplayState时没有定义? 2.为什么SaladsDisplayState在Render()部分中定义?为什么我的this.state.salad到处定义?

请帮帮我,谢谢:)

1 个答案:

答案 0 :(得分:0)

当你想在React Native中调用一个函数/ Method时,从一个组件就像TouchableOpacity组件一样,你应该使用onPress={() => this.changeState()}onPress={this.changeState}。如果你是使用onPress={this.changeState()}的juste,当组件预渲染时,当代码到达这一行时,它将执行此代码。它不会等你进行新闻!