<div id="app"></div>
.list {
  margin:10px;
  border:1px solid #eee;
  box-shadow: 0 2px 2px #ccc;
  width:200px;
  padding:20px;
}

.wrapper {
  display: flex;
  flex-direction: row;
}

.wrapper-inner {
  display: flex;
  flex-direction: column;
}
class Test extends React.Component {
  state = {
      inputValue: '',
      arr: ['default_01','default_02'],
    };
  
  handleChange = (e) => {
    this.setState({
      inputValue: e.target.value
    })
  }
  
  onClickAdd = (e) => {
    const {inputValue, arr} = this.state;
    this.setState({
      arr: [inputValue, ...arr],
    })
  }
  
  render(){
    const {name} = this.props;
    return (
      <div className="test-container">
        <input value={this.state.inputValue}
          onChange={this.handleChange}/>
        <button onClick={this.onClickAdd}>Add first element</button>
        <div className="wrapper">
          <div className="wrapper-inner">
            <header>
              key 가 index 인 경우
            </header>
        {this.state.arr.map((value,idx) => {
          return <div className="list" key={idx}>
            <div>{value}</div>
            <input type='text' className='form-control' />
          </div>
        })}
          </div>
                    <div className="wrapper-inner">
                      <header>
              key 가 value 인 경우
            </header>
        {this.state.arr.map((value,idx) => {
          return <div className="list" key={value}>
            <div>{value}</div>
            <input type='text' className='form-control' />
          </div>
        })}
          </div>
        </div>
      </div>
    );
  }
};

ReactDOM.render(<Test name="테스트성공~!"/>, document.getElementById("app"));
 
View Compiled

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

  1. https://cdnjs.cloudflare.com/ajax/libs/react/17.0.2/umd/react.production.min.js
  2. https://cdnjs.cloudflare.com/ajax/libs/react-dom/17.0.2/umd/react-dom.production.min.js