React의 드래그 앤 드롭 목록

반응 애플리케이션에서 일부 데이터를 목록 형식으로 구성합니다. 정렬된 목록과 정렬되지 않은 목록으로 데이터를 표시할 수 있습니다. 애플리케이션에서 때때로 목록 항목의 순서를 설정해야 합니다. 이를 위해 UI에서 목록 순서를 쉽게 설정할 수 있는 react에서 드래그 앤 드롭 목록을 만들 수 있습니다.

React에서 드래그 앤 드롭 목록 만들기




var placeholder = document.createElement("li");
placeholder.className = "placeholder";

class List extends React.Component {
  constructor(props) {
    super(props);
    this.state = {...props};
  }
  dragStart(e) {
    this.dragged = e.currentTarget;
    e.dataTransfer.effectAllowed = 'move';
    e.dataTransfer.setData('text/html', this.dragged);
  }
  dragEnd(e) {
    this.dragged.style.display = 'block';
    this.dragged.parentNode.removeChild(placeholder);

    // update state
    var data = this.state.colors;
    var from = Number(this.dragged.dataset.id);
    var to = Number(this.over.dataset.id);
    if(from < to) to--;
    data.splice(to, 0, data.splice(from, 1)[0]);
    this.setState({colors: data});
  }
  dragOver(e) {
    e.preventDefault();
    this.dragged.style.display = "none";
    if(e.target.className === 'placeholder') return;
    this.over = e.target;
    e.target.parentNode.insertBefore(placeholder, e.target);
  }
    render() {
    var listItems = this.state.colors.map((item, i) => {
      return (
        <li 
          data-id={i}
          key={i}
          draggable='true'
          onDragEnd={this.dragEnd.bind(this)}
          onDragStart={this.dragStart.bind(this)}>{item}</li>
      )
     });
        return (
            <ul onDragOver={this.dragOver.bind(this)}>
        {listItems}
      </ul>
        )
    }
}


React에서 목록 구성 요소 사용



이제 Component가 있어 클래스 또는 기능적 구성 요소에서 사용할 수 있습니다. 또한 색상 소품과 같은 일부 소품을 구성 요소에 전달할 수 있습니다. 예를 들어 App Component에서 이것을 사용하십시오.

class App extends React.Component {
    constructor(props) {
        super(props);
        this.state = {
            colors: ['PHP', 'MYSQL', 'REACT', 'LARAVEL']
        }
    }
    render() {
        return (
            <div>
        <List colors={this.state.colors} /> 
            </div>
        )
    }
}


React의 스타일 목록




ul {
  list-style: none;
  margin:0;
  padding:0;
  border: 5px solid #e1e1e1;
  box-shadow: 1px 3px 8px #888; 
}

li {
  padding: 10px 15px;
  background:#eee;
  &:hover {
    background: darken(#eee, 5%);
  }
}

.placeholder {
  background: rgb(255,240,120);
  &:before {
    content: "Drop here";
    color: rgb(225,210,90);
  }
}



구독 좋아요 공유와 긍정적인 피드백을 보내주세요.

더 많은 자습서를 보려면 visit my website .

감사:)
행복한 코딩 :)

좋은 웹페이지 즐겨찾기