ReactJS, только последние обновления идентификатора элемента

#javascript #reactjs #axios

#javascript #reactjs #axios

Вопрос:

Можете ли вы дать мне идею решить мою ошибку, когда я обновляю данные, только последний идентификатор элемента вносит изменения, даже если я нажимаю на первый идентификатор.

Модальный

 <Modal
    size="lg"
    show={UpShow}
    onHide={() => setUpShow(false)}
    aria-labelledby="contained-modal-title-vcenter"
    aria-describedby="transition-modal-description"
    className={classes.modal}
    >
    <Modal.Body>
        <div className="modal-background-color">
             <PurchaseUpdate requestType="put" id={PurchaseData.id} />
        </div>
    </Modal.Body>
</Modal>
  

Все работает хорошо, кроме обновления, у кого есть идея, пожалуйста, дайте мне знать.Спасибо

 POhandleformsubmit = (event, requestType, id) => {
    // event.preventDefault();
    const Item_no = event.target.elements.upItem_no.value;
    const Description = event.target.elements.upDescription.value;
    const Supplier = event.target.elements.upSupplier.value;
    const Unit_price = event.target.elements.upUnit_price.value;
    const Quantity = event.target.elements.upQuantity.value;

    console.log(Item_no, Description, Supplier, Unit_price, Quantity);

    switch (requestType) {
        case 'put':
            return axios.put(`http://127.0.0.1:8000/Purchase/PO/${id}/`, {
                Item_no: Item_no,
                Description: Description,
                Supplier: Supplier,
                Unit_price: Unit_price,
                Quantity: Quantity

            })
                .then(res => console.log(res))
                .catch(error => console.log(error));
    }

}
  

https://codesandbox.io/s/determined-visvesvaraya-5b87b?file=/src/App.js

Ответ №1:

Проблема

UpShow является логическим ( const [UpShow, setUpShow] = useState(false); ), поэтому, когда какой-либо отдельный PurchaseData элемент переключает значение ( onClick={() => setUpShow(PurchaseData.id)} ), тогда все модалы переключаются (поскольку они стоят в очереди из одного и того же значения состояния), а модальный элемент последнего отображенного PurchaseData элемента является самым верхним видимым. Когда модальный переключатель переключается на close, аналогично, все модалы закрываются.

Решение

Проверьте сохраненный PurchaseData.id , чтобы открыть какой-либо конкретный модальный.

 <Modal
  size="lg"
  show={UpShow === PurchaseData.id} // <-- match saved id with the current mapped id
  onHide={() => setUpShow(false)}
  aria-labelledby="contained-modal-title-vcenter"
  aria-describedby="transition-modal-description"
  className={classes.modal}
>
  <Modal.Body>
    <div className="modal-background-color">
      <PurchaseUpdate
        requestType="put"
        id={PurchaseData.id}
      />
    </div>
  </Modal.Body>
</Modal>