第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在ReactJS中添加或刪除新信息時再次調用狀態(tài)而不需要手動刷新頁面?

如何在ReactJS中添加或刪除新信息時再次調用狀態(tài)而不需要手動刷新頁面?

青春有我 2023-07-29 15:15:05
我一直面臨一個問題。我已經(jīng)嘗試解決它了。但是,我不知道如何讓它發(fā)揮作用。我知道我的問題是在推送或刪除 API 后我沒有重新更新列表新狀態(tài)?我怎樣才能解決這個問題?這樣我就不用手動刷新頁面了?我有 2 個組件,但在這篇文章中,我將僅展示我用于刪除并從 API 讀取這篇文章的組件,該組件稱為“產(chǎn)品”。PostForm 組件是一個單獨的組件,導入到創(chuàng)建/刪除組件中。我在 setState 中添加了這段代碼以進行刪除。我想我需要一個函數(shù)來重新更新狀態(tài),但不知道如何操作。希望得到幫助 // ProductList: filter((item) => item.id !== ProductId),class Products extends Component {  state = {    productList: [],    statusMsg: "",  };  // READ  getDataFromProductsApi() {    axios      .get("https://localhost:44366/api/Products/")      .then((res) => {        console.log(res.data);        this.setState({          productList: res.data,        });      })      .catch((error) => {        console.log(error);        this.setState({ statusMsg: "Error retreiving data" });        if (axios.isCancel(error)) return;      });  }  componentDidMount() {    this.getDataFromProductsApi();  }  // DELETE  deleteProduct = (productId, productName) => {    if (window.confirm("Are you sure? you want to delete")) {      axios        .delete(`https://localhost:44366/api/Products/${productId}`)        .then((response) => {          console.log(response);          this.setState({            statusMsg: `Product name: ${productName} With the ID: ${productId} was removed!`,            // productList: filter((item) => item.id !== productId),          });        });    }  };  showProducts = () => {    return (      <table className="customers">        <tbody>          <tr>            <th>ID</th>            <th>Name</th>            <th>Category</th>            <th>Price</th>            <th>Delete</th>          </tr>
查看完整描述

1 回答

?
泛舟湖上清波郎朗

TA貢獻1818條經(jīng)驗 獲得超3個贊

你的意思是這樣的嗎?

https://jsfiddle.net/bq8h7ns9/

class Products extends React.Component {

  state = {

    productList : [],

    statusMsg: "",

  };


  // READ

  getDataFromProductsApi() {

    this.setState({

      productList: [{ id : 0, name: 'blah1', price: 12.3, category : 'blah' }, { id : 1, name: 'blah2', price: 32.1, category : 'blah' }],

    });

  }

  

  componentDidMount() {

    this.getDataFromProductsApi();

  }


  // DELETE


  deleteProduct = (productId, productName) => {

    if (window.confirm("Are you sure? you want to delete")) {

      this.setState({

        statusMsg: `Product name: ${productName} With the ID: ${productId} was removed!`,

        productList: this.state.productList.filter((item) => item.id !== productId),

      });

    }

  };


  showProducts = () => {

    return (

      <table className="customers">

        <tbody>

          <tr>

            <th>ID</th>

            <th>Name</th>

            <th>Category</th>

            <th>Price</th>

            <th>Delete</th>

          </tr>


          {this.state.productList.map((product) => {

            return (

              <tr key={product.id}>

                <td>{product.id}</td>

                <td>{product.name}</td>

                <td>{product.category}</td>

                <td>{product.price}</td>

                <td>

                  <button

                    onClick={() => this.deleteProduct(product.id, product.name)}

                  >

                    X

                  </button>

                </td>

              </tr>

            );

          })}

        </tbody>

      </table>

    );

  };


  render() {

    return (

      <header className="App-header">

        <div>

          <h1>Products</h1>

          <div> {this.state.statusMsg}</div>

          {this.showProducts()} {/*running function to show data view */}

        </div>

      </header>

    );

  }

}

您已經(jīng)在更新組件的狀態(tài);就是這樣setState。您注釋掉的行應該類似于this.state.productList.filter((item) => item.id !== productId),filter不是全局函數(shù)。


如果您希望組件與 api 保持同步,那么您將需要使用 websockets 或長輪詢之類的東西。HTTP 是一種無狀態(tài)協(xié)議。


查看完整回答
反對 回復 2023-07-29
  • 1 回答
  • 0 關注
  • 183 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號