condition에 따라 style에 변화주기

Written on June 24, 2019

excerpt: condition/state에 따라 간단하게 style에 변화를 줄 수 있는 방법!

바로 style을 배열로 주는 것이다. 공통된 style과, state에 따라 달라지는 style을 조건부로 주어 isCompleted라는 state가 변할 때 마다 다른 style 효과를 줄 수 있다.

<View
  style={[
    styles.circle,
    isCompleted ? styles.completedCircle : styles.unCompletedCircle
  ]}
/>


전체 컴포넌트 코드

export default class ToDo extends Component {
  state = {
    isCompleted: false
  };

  _toggleComplete = () => {
    this.setState(prevState => {
      return {
        isCompleted: !prevState.isCompleted
      };
    });
  };

  render() {
    const { isCompleted } = this.state;
    return (
      <View style={styles.container}>
        <TouchableOpacity onPress={this._toggleComplete}>
          <View
            style={[
              styles.circle,
              isCompleted ? styles.completedCircle : styles.unCompletedCircle
            ]}
          />
        </TouchableOpacity>
      </View>
    );
  }
}

const styles = StyleSheet.create({
  container: {
    width: width - 50,
    borderBottomWidth: StyleSheet.hairlineWidth,
    borderBottomColor: "#bbb",
    flexDirection: "row",
    alignItems: "center"
  },
  circle: {
    width: 30,
    height: 30,
    borderRadius: 15,
    borderWidth: 2,
    marginRight: 20
  },
  completedCircle: { borderColor: "#bbb" },
  unCompletedCircle: { borderColor: "#720D5D" }
});

참고자료

노마드코더 Kawai To Do

👩🏻‍💻 배우는 것을 즐기는 프론트엔드 개발자 입니다
부족한 블로그에 방문해 주셔서 감사합니다 🙇🏻‍♀️

in the process of becoming the best version of myself