简体   繁体   English

在 React 应用程序中,我删除了 firebase 上的组件数据,但即使我更改了状态,它也不会从我的 dom 中删除

[英]In React app , I delete my component data on firebase but it does'n delete from my dom even when I change the state

I have get my data from firebase , loop through them and display them to dom.我已经从 firebase 获取我的数据,遍历它们并将它们显示到 dom。 then I added a delete button and send a delete request using axios and it's delete from firebase but the dom doesn't rerender.然后我添加了一个删除按钮并使用 axios 发送删除请求,它从 firebase 中删除,但 dom 没有重新渲染。 I set a deleting state to change it in 'then' block but even when I change the state it dosn't rerender!我设置了一个删除状态以在“then”块中更改它,但即使我更改了状态,它也不会重新渲染! what can I do?我能做什么?

class Orders extends Component {

  state = {
    orders: [],
    loading: true,
    deleting: false,
  };

  componentDidMount() {
    axios
      .get('/order.json')
      .then((res) => {
        // console.log(res.data);
        const fetchedOrders = [];
        for (let key in res.data) {
          fetchedOrders.push({ ...res.data[key], id: key });
        }
        this.setState({ loading: false, orders: fetchedOrders });
      })
      .catch((err) => {
        this.setState({ loading: false });
      });
  }

  deleteHandler = (id) => {

    axios.delete(`/order/${id}.json`).then((res) => {
      this.setState({ deleting: true });
      console.log(res, this.state.deleting);
    });
  };

  render() {


    return (
      <div>
        {this.state.orders.map((order) => (
          <Order
            key={order.id}
            ingredients={order.ingredient}
            price={order.price}
            id={order.id}
            delete={() => this.deleteHandler(order.id)}
          />
        ))}
      </div>
    );
  }
}

You have to update the orders state while calling deleteHandler!您必须在调用 deleteHandler 时更新订单状态! Try this code!试试这个代码!

import React from 'react';
import axios from 'axios';

// YOUR OTHER IMPORT GOES HERE

class Orders extends Component {
  constructor(props) {
     this.state = {
       orders: [],
       loading: true,
       deleting: false,
     }
  }

  componentDidMount() {
    axios
      .get('/order.json')
      .then((res) => {
        // console.log(res.data);
        const fetchedOrders = [];
        for (let key in res.data) {
          fetchedOrders.push({ ...res.data[key], id: key });
        }
        this.setState({ loading: false, orders: fetchedOrders });
      })
      .catch((err) => {
        this.setState({ loading: false });
      });
  }

  deleteHandler = (id) => {
    this.setState({
      orders: this.state.orders.filter(orderValue => orderValue.id !== id)
    })
    axios.delete(`/order/${id}.json`).then((res) => {
      this.setState({ deleting: true });
      console.log(res, this.state.deleting);
    });
  };

  render() {
    return (
      <div>
        {this.state.orders.map((order) => (
          <Order
            key={order.id}
            ingredients={order.ingredient}
            price={order.price}
            id={order.id}
            delete={() => this.deleteHandler(order.id)}
          />
        ))}
      </div>
    );
  }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 当我将状态从 true 更改为 false 时,为什么我的模态不会隐藏在反应中? - Why does my modal not hide in react when I change my state from true to false? 当我从这里删除数据时状态没有改变 - Status does not change when I delete data from here 当我在 React Native 中更新我的 State 时,我的 State 发生了变化,但组件消失了 如何解决这个问题? - My State Does Change But Components Are Disappear When I Update My State In React Native How To Fıx This? 为什么即使正确更改了基础数据结构,React中的列表组件在删除事件后仍保留错误的单元格? - Why does my list component in React keep the wrong cell upon a delete event even though the underlying data structure is properly changed? 如何从 Firebase 获取数据到我的 React 应用程序中 - How can I fetch data from Firebase into my React App 如何从Firebase中删除数据并更新表? - How can i delete data from my Firebase and update my table? 当我从 firebase 导入 {db} 时,为什么我的 React 应用程序 go 空白? - Why does my react app go blank when I import {db} from firebase? 为什么我的React孙子组件在收到其父组件的道具更改后没有更新? 或者:我需要使用状态吗? - Why does my React grandchild component not update after receiving a change in props from its parent? Or: do I need to use state? 为什么即使我尚未将vuex状态绑定到任何html输入元素,我的vuex状态也会在更改组件级别状态时发生变化? - Why does my vuex state change on changing my component level state even if I have not binded the vuex state to any html input element? 如何通过 Web 应用程序从 firebase 中删除数据? - How can I delete data from firebase thru web app?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM