REST API에서 목록 데이터를 가져온 후 항목 배열에서 목록 항목을 삭제하려고합니다.

알리사

REST API에서 동적으로 얻은 목록 항목 그룹에서 목록 항목을 삭제하려고합니다. axios 요청으로 BACKEND에서 목록 항목을 삭제할 수 있지만 실제 목록 항목 표시가 더 이상 표시되지 않도록 페이지를 새로 고쳐야합니다. UI에서 목록 항목을 삭제하여 삭제를 누르면 백엔드와 프런트 엔드에서 모두 삭제됩니다. 알아낼 수없는 것 같고 여러 가지 방법을 시도했습니다.

class App extends Component {
  constructor(props) {
    super(props);
    this.state = {
      users: [],
      loading: false,
      value: '',
      open: false
    };

    this.toggle = this.toggle.bind(this);
  }

  search = async val => {
    this.setState({ loading: true });
    let res = await search(
      `https://zuul-stage.whatifops.com/v1/user/phone/${val}`
    );
    this.setState({ users: res, loading: false });
  };

  onChangeHandler = async e => {
    this.search(e.target.value);
    this.setState({ value: e.target.value });
  };

  toggle() {
    this.setState({
      open: !this.state.open
    });
  }

  get renderUsers() {
    let users = <h1 />;
    if (!this.state.loading) {
      users = this.state.users.map(user => (
        <div>
          <Row>
            <Col lg={2} style={{ maxWidth: '9.7%' }}>
              <Button
                color='danger'
                style={{ paddingTop: 12, paddingBottom: 12 }}
                onClick={this.toggle}
              >
                <i className='fa fa-trash'></i>&nbsp; Delete
              </Button>
            </Col>
            <Col lg={10}>
              <ListGroup>
                <ListGroupItem key={user.id} value={user.value} id={user.id}>
                  <strong>Email:</strong> {user.email} &nbsp; &nbsp;
                  <strong>Phone:</strong> {user.phone}
                </ListGroupItem>
              </ListGroup>
            </Col>
          </Row>
          <br />
          <Modal
            isOpen={this.state.open}
            toggle={this.toggle}
            className={'modal-danger'}
          >
            <ModalHeader toggle={this.toggleSuccess}>Delete User</ModalHeader>
            <ModalBody>
              <Row>
                <Col
                  lg={2}
                  style={{
                    display: 'flex',
                    justifyContent: 'center',
                    alignItems: 'center',
                    color: '#f86c6b'
                  }}
                >
                  <i className='fa fa-warning fa-3x'></i>
                </Col>
                <Col lg={10}>
                  Are you sure you want to delete the user with the following
                  credentials:
                  <br />
                  <br />
                  <span>
                    &nbsp;&nbsp;&nbsp;{' '}
                    <strong>
                      <i className='fa fa-envelope'></i> &nbsp;Email:
                    </strong>{' '}
                    {user.email}
                  </span>
                  <br />
                  <span>
                    &nbsp;&nbsp;&nbsp;&nbsp;{' '}
                    <strong>
                      <i className='fa fa-phone'></i> &nbsp;Phone:
                    </strong>{' '}
                    {user.phone}
                  </span>
                </Col>
              </Row>
              <br />
            </ModalBody>
            <ModalFooter>
              <Button color='danger' onClick={this.open}>
                Delete
              </Button>
              <Button color='secondary' onClick={this.open}>
                Cancel
              </Button>
            </ModalFooter>
          </Modal>
        </div>
      ));
    } else {
      return <p>Loading...</p>;
    }

    return users;
  }

  render() {
    return (
      <div>
        <div className='display-4'>Users</div>
        <hr />
        <Row>
          <Col lg={12}>
            <Label>Enter an email or phone number:</Label>
          </Col>
        </Row>
        <Row>
          <Col lg={12}>
            <Input
              value={this.state.value}
              onChange={e => this.onChangeHandler(e)}
              placeholder='Begin typing to search'
            />
          </Col>
        </Row>
        <br />
        {this.renderUsers}
      </div>
    );
  }
}

export default App;

모두 감사하겠습니다. 감사!

** 업데이트 된 코드 :

class App extends Component {
  constructor(props) {
    super(props);
    this.state = {
      users: [],
      loading: false,
      value: '',
      open: false
    };

    this.toggle = this.toggle.bind(this);
  }

  search = async val => {
    this.setState({ loading: true });
    let res = await search(
      `https://zuul-stage.whatifops.com/v1/user/phone/${val}`
    );
    this.setState({ users: res, loading: false });
  };

  onChangeHandler = async e => {
    this.search(e.target.value);
    this.setState({ value: e.target.value });
  };

  toggle() {
    this.setState({
      open: !this.state.open
    });
  }

  onDelete(e) {
    let id = e.target.id;
    let updatedUsers = this.users.filter(user => user.id != id);
    this.setState({ users: updatedUsers });
  }

  get renderUsers() {
    let users = <h1 />;
    if (!this.state.loading) {
      users = this.state.users.map(user => (
        <div>
          <Row>
            <Col lg={2} style={{ maxWidth: '9.7%' }}>
              <Button
                color='danger'
                style={{ paddingTop: 12, paddingBottom: 12 }}
                onClick={this.onDelete(user.id)}
              >
                <i className='fa fa-trash'></i>&nbsp; Delete
              </Button>
            </Col>
            <Col lg={10}>
              <ListGroup>
                <ListGroupItem key={user.id} value={user.value} id={user.id}>
                  <strong>Email:</strong> {user.email} &nbsp; &nbsp;
                  <strong>Phone:</strong> {user.phone}
                </ListGroupItem>
              </ListGroup>
            </Col>
          </Row>
          <br />
          <Modal
            isOpen={this.state.open}
            toggle={this.toggle}
            className={'modal-danger'}
          >
            <ModalHeader toggle={this.toggleSuccess}>Delete User</ModalHeader>
            <ModalBody>
              <Row>
                <Col
                  lg={2}
                  style={{
                    display: 'flex',
                    justifyContent: 'center',
                    alignItems: 'center',
                    color: '#f86c6b'
                  }}
                >
                  <i className='fa fa-warning fa-3x'></i>
                </Col>
                <Col lg={10}>
                  Are you sure you want to delete the user with the following
                  credentials:
                  <br />
                  <br />
                  <span>
                    &nbsp;&nbsp;&nbsp;{' '}
                    <strong>
                      <i className='fa fa-envelope'></i> &nbsp;Email:
                    </strong>{' '}
                    {user.email}
                  </span>
                  <br />
                  <span>
                    &nbsp;&nbsp;&nbsp;&nbsp;{' '}
                    <strong>
                      <i className='fa fa-phone'></i> &nbsp;Phone:
                    </strong>{' '}
                    {user.phone}
                  </span>
                </Col>
              </Row>
              <br />
            </ModalBody>
            <ModalFooter>
              <Button color='danger' onClick={this.open}>
                Delete
              </Button>
              <Button color='secondary' onClick={this.open}>
                Cancel
              </Button>
            </ModalFooter>
          </Modal>
        </div>
      ));
    } else {
      return <p>Loading...</p>;
    }

    return users;
  }

  render() {
    return (
      <div>
        <div className='display-4'>Users</div>
        <hr />
        <Row>
          <Col lg={12}>
            <Label>Enter an email or phone number:</Label>
          </Col>
        </Row>
        <Row>
          <Col lg={12}>
            <Input
              value={this.state.value}
              onChange={e => this.onChangeHandler(e)}
              placeholder='Begin typing to search'
            />
          </Col>
        </Row>
        <br />
        {this.renderUsers}
      </div>
    );
  }
}

export default App;
Shubham

this.state.users에서 사용자를 삭제하고 싶은 것 같습니다. 다음과 같이 할 수 있습니다.

onDelete(id){
let updatedUsers = this.users.filter(user=>user.id!=id)
this.setState({users:updatedUsers })
}

아직없는 경우 각 사용자에게 ID를 추가해야합니다.

내 제안은 API 호출을 한 번 성공한 경우에만 프런트 엔드에서 삭제하므로 API 성공 콜백에이 코드를 추가 할 수 있습니다. 따라서 삭제 호출이 실패하면 프런트 엔드에서도 삭제하지 마십시오.

onClick={() => this.onDelete(user.id)}

이것이 onDelete를 첨부하는 방법입니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

REST API를 사용하여 SharePoint에서 목록 항목을 가져 오려면 어떻게해야합니까?

분류에서Dev

목록에 새 목록 항목을 추가하여 목록 높이 계산

분류에서Dev

목록에 추가 한 후 목록 항목이 사라짐

분류에서Dev

중복 항목을 피하면서 목록에 항목 추가

분류에서Dev

중복 항목을 피하면서 목록에 항목 추가

분류에서Dev

데이터베이스에서 항목을 삭제 한 후 내 목록보기를 새로 고치는 방법

분류에서Dev

목록 목록에서 항목 삭제

분류에서Dev

가져온 항목 목록에서 요소를 선택하는 jQuery

분류에서Dev

SwiftUI : 데이터를 업데이트 목록에서 항목을 선택 후

분류에서Dev

목록보기를 스크롤 한 후 항목을 목록보기에 추가 할 수 없습니다.

분류에서Dev

드라이브 목록을 가져온 후 마지막 빈 항목 제거-배치 스크립트

분류에서Dev

파이썬 : 목록에서 항목을 평가하는 방법

분류에서Dev

데이터베이스에서 파일을 가져온 후 항목을 배열로 푸시 할 수 없음

분류에서Dev

목록의 항목을 파이썬의 다른 목록의 항목에 할당

분류에서Dev

Python : 이전 항목을 사용하여 목록 사전에 새 항목 추가

분류에서Dev

Java / Android 목록 항목을 다른 목록에 추가

분류에서Dev

목록에서 중복 항목을 가져오고 목록에 답변 표시

분류에서Dev

MongoDB는 항목 배열에서 item.field 목록을 가져옵니다.

분류에서Dev

Linq는 목록 목록에서 특정 항목을 가져옵니다.

분류에서Dev

드롭 다운 목록에서 항목을 선택하고 목록에서 항목을 값으로 제거한 다음 합계를 업데이트합니다.

분류에서Dev

목록에서 항목을 삭제하고 setState (() {})를 수행하면 색상 상태가 변경됩니다.

분류에서Dev

'del'을 사용하여 파이썬의 목록 목록에서 항목 삭제

분류에서Dev

jQuery로 목록에서 항목을 추가하고 제거하는 데 도움이 필요합니다.

분류에서Dev

(날짜) 목록의 (이벤트) 목록에서 항목 삭제

분류에서Dev

목록에서 항목을 제거하면 목록의 나머지 항목이 엉망이됩니다.

분류에서Dev

Python : 이전에 추가 된 항목과의 차이가 적을 때 목록에서 항목 삭제

분류에서Dev

새 항목을 만들고 이웃 목록에 추가

분류에서Dev

데이터 목록에서 항목을 두 번 이상 추가 / 제거하는 데 문제가 있습니다.

분류에서Dev

목록에서 항목을 추가하고 제거하는 QCheckbox

Related 관련 기사

  1. 1

    REST API를 사용하여 SharePoint에서 목록 항목을 가져 오려면 어떻게해야합니까?

  2. 2

    목록에 새 목록 항목을 추가하여 목록 높이 계산

  3. 3

    목록에 추가 한 후 목록 항목이 사라짐

  4. 4

    중복 항목을 피하면서 목록에 항목 추가

  5. 5

    중복 항목을 피하면서 목록에 항목 추가

  6. 6

    데이터베이스에서 항목을 삭제 한 후 내 목록보기를 새로 고치는 방법

  7. 7

    목록 목록에서 항목 삭제

  8. 8

    가져온 항목 목록에서 요소를 선택하는 jQuery

  9. 9

    SwiftUI : 데이터를 업데이트 목록에서 항목을 선택 후

  10. 10

    목록보기를 스크롤 한 후 항목을 목록보기에 추가 할 수 없습니다.

  11. 11

    드라이브 목록을 가져온 후 마지막 빈 항목 제거-배치 스크립트

  12. 12

    파이썬 : 목록에서 항목을 평가하는 방법

  13. 13

    데이터베이스에서 파일을 가져온 후 항목을 배열로 푸시 할 수 없음

  14. 14

    목록의 항목을 파이썬의 다른 목록의 항목에 할당

  15. 15

    Python : 이전 항목을 사용하여 목록 사전에 새 항목 추가

  16. 16

    Java / Android 목록 항목을 다른 목록에 추가

  17. 17

    목록에서 중복 항목을 가져오고 목록에 답변 표시

  18. 18

    MongoDB는 항목 배열에서 item.field 목록을 가져옵니다.

  19. 19

    Linq는 목록 목록에서 특정 항목을 가져옵니다.

  20. 20

    드롭 다운 목록에서 항목을 선택하고 목록에서 항목을 값으로 제거한 다음 합계를 업데이트합니다.

  21. 21

    목록에서 항목을 삭제하고 setState (() {})를 수행하면 색상 상태가 변경됩니다.

  22. 22

    'del'을 사용하여 파이썬의 목록 목록에서 항목 삭제

  23. 23

    jQuery로 목록에서 항목을 추가하고 제거하는 데 도움이 필요합니다.

  24. 24

    (날짜) 목록의 (이벤트) 목록에서 항목 삭제

  25. 25

    목록에서 항목을 제거하면 목록의 나머지 항목이 엉망이됩니다.

  26. 26

    Python : 이전에 추가 된 항목과의 차이가 적을 때 목록에서 항목 삭제

  27. 27

    새 항목을 만들고 이웃 목록에 추가

  28. 28

    데이터 목록에서 항목을 두 번 이상 추가 / 제거하는 데 문제가 있습니다.

  29. 29

    목록에서 항목을 추가하고 제거하는 QCheckbox

뜨겁다태그

보관