Zoeken…


Syntaxis

  • void setState (functie | object nextState, [functie callback])

setstate

Als u de weergave in uw toepassing wilt wijzigen, kunt u setState gebruiken. setState uw component en alle onderliggende componenten opnieuw setState . setState voert een ondiepe samenvoeging uit tussen de nieuwe en vorige status en activeert een herrendering van de component.

setState neemt een sleutelwaardeobject of een functie die een sleutelwaardeobject retourneert

Sleutel / waarde-object

this.setState({myKey: 'myValue'});

Functie

Het gebruik van een functie is handig voor het bijwerken van een waarde op basis van de bestaande status of rekwisieten.

this.setState((previousState, currentProps) => {
    return {
        myInteger: previousState.myInteger+1
    }
})

U kunt ook een optionele callback doorgeven aan setState die wordt setState wanneer de component opnieuw wordt gerenderd met de nieuwe status.

this.setState({myKey: 'myValue'}, () => {
    // Component has re-rendered... do something amazing!
));

Volledig voorbeeld

import React, { Component } from 'react';
import { AppRegistry, StyleSheet, Text, View, TouchableOpacity } from 'react-native';

export default class MyParentComponent extends Component {
  constructor(props) {
    super(props);

    this.state = {
      myInteger: 0
    }

  }
  getRandomInteger() {
    const randomInt = Math.floor(Math.random()*100);

    this.setState({
      myInteger: randomInt
    });

  }
  incrementInteger() {
    
    this.setState((previousState, currentProps) => {
      return {
        myInteger: previousState.myInteger+1
      }
    });

  }
  render() {

    return <View style={styles.container}>
      
      <Text>Parent Component Integer: {this.state.myInteger}</Text>

      <MyChildComponent myInteger={this.state.myInteger} />

      <Button label="Get Random Integer" onPress={this.getRandomInteger.bind(this)} />
      <Button label="Increment Integer" onPress={this.incrementInteger.bind(this)} />

    </View>

  }
}

export default class MyChildComponent extends Component {
  constructor(props) {
    super(props);
  }
  render() {
    
    // this will get updated when "MyParentComponent" state changes
    return <View>
      <Text>Child Component Integer: {this.props.myInteger}</Text>
    </View>
    
  }
}

export default class Button extends Component {
  constructor(props) {
    super(props);
  }
  render() {

    return <TouchableOpacity onPress={this.props.onPress}>
        <View style={styles.button}>
          <Text style={styles.buttonText}>{this.props.label}</Text>
        </View>
      </TouchableOpacity>
    
  }
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
    justifyContent: 'center',
    alignItems: 'center',
    backgroundColor: '#F5FCFF',
  },
  button: {
    backgroundColor: '#444',
    padding: 10, 
    marginTop: 10
  },
  buttonText: {
    color: '#fff'
  }
});

AppRegistry.registerComponent('MyApp', () => MyParentComponent);

Initialiseer staat

U moet de status binnen de constructorfunctie van uw component als volgt initialiseren:

export default class MyComponent extends Component {
  constructor(props) {
    super(props);
    
    this.state = {
      myInteger: 0
    }
  }
  render() {
    return  (
      <View>
        <Text>Integer: {this.state.myInteger}</Text>
      </View>
    )
  }
}

Met setState kan men de weergave bijwerken.



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow