react-native                
            상태
        
        
            
    수색…
통사론
- 무효 setState (함수 | 개체 nextState, [함수 콜백])
 
setState
 애플리케이션에서 뷰를 변경하려면 setState 를 사용할 수 있습니다. 그러면 구성 요소와 하위 구성 요소가 다시 렌더링됩니다. setState는 새 상태와 이전 상태 사이의 얕은 병합을 수행하고 구성 요소의 다시 렌더링을 트리거합니다. 
 setState 는 키 - 값 객체 또는 키 - 값 객체를 반환하는 함수 중 하나를 취합니다. 
키 - 값 오브젝트
this.setState({myKey: 'myValue'});
 기능
함수를 사용하면 기존 상태 또는 소품을 기반으로 값을 업데이트 할 때 유용합니다.
this.setState((previousState, currentProps) => {
    return {
        myInteger: previousState.myInteger+1
    }
})
  구성 요소가 새 상태로 다시 렌더링 될 때 시작될 선택적 상태 콜백을 setState 전달할 수도 있습니다. 
this.setState({myKey: 'myValue'}, () => {
    // Component has re-rendered... do something amazing!
));
 전체 예제
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);
        상태 초기화
다음과 같이 구성 요소의 생성자 함수 내에서 상태를 초기화해야합니다.
export default class MyComponent extends Component {
  constructor(props) {
    super(props);
    
    this.state = {
      myInteger: 0
    }
  }
  render() {
    return  (
      <View>
        <Text>Integer: {this.state.myInteger}</Text>
      </View>
    )
  }
}
 setState를 사용하면 뷰를 업데이트 할 수 있습니다.
Modified text is an extract of the original Stack Overflow Documentation
        아래 라이선스 CC BY-SA 3.0
        와 제휴하지 않음 Stack Overflow