Jiimy publisher hoping to become a developer

react 실습

2018-03-21

import React from 'react';
import './_mainlist.css';
import styled from 'styled-components';
class MainList extends React.Component {
  // 렌더링 객체
  constructor(props) {
    super(props);
    this.state = {
      ListData: [
        {
          text: '상품문의',
          content: '제목이 출력되겠지요 누르면 답변이 아래로 떨어집니다. 흔히 아코디언UI라고 하지요',
          answer: '답변1 다람쥐 헌 쳇바퀴에 돌고파'
        },
        {
          text: '상품문의',
          content: '1제목이 출력되겠지요 한줄일때는 이렇게',
          answer: '다람쥐 헌 쳇바퀴에 돌고파 다람쥐 헌 쳇바퀴에 돌고파 다람쥐 헌 쳇바퀴에 돌고파 다람쥐 헌 쳇바퀴에 돌고파'
        }
      ]
    }
  }
  render() {
    return (
      <section>
        <dl>
        </*map을 이용해서 match rendering*/>
          {this.state.ListData.map((list, i) => {
            return (
              <div>
                <ListPrint
                  key={i}
                  text={list.text}
                  content={list.content}
                  answer={list.answer}
                />
              </div>
            )
          })}
        </dl>
      </section>
    )
  }
};

직접적으로 화면에 렌더링 하는 부분

class ListPrint extends React.Component {
  constructor(props) {
    super(props);
    // 기본값 설정
    this.state = {
      showdd: false,
      rotateimg:false
    }
    this.dtclick = this.dtclick.bind(this)
  }
  dtclick(e) {
    e.preventDefault();
    this.setState({
      // 토글 하는 부분
      showdd:!this.state.showdd,
      rotateimg:!this.state.rotateimg
    }
    )
  }
  render() {
    return (
      <div>
        <dt onClick={this.dtclick}><span>{this.props.text}</span>{this.props.content}<img src={require('../../img/down.svg')} width="32" height="19" alt="내용확인" className={this.state.rotateimg ? "imgdw": "imgup"}/></dt>
        {/*이 부분에 상태 연결*/}
        <dd className={this.state.showdd ? "on":"off"}>
          {this.props.answer}
        </dd>
      </div>
    )
  }
}

Content