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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

如何使用localStorage.removeItem從數(shù)組中刪除項(xiàng)目?

如何使用localStorage.removeItem從數(shù)組中刪除項(xiàng)目?

我正在使用localStorage.setItem并localStorage.getItem存儲(chǔ)來(lái)自API的數(shù)據(jù)(以我的情況為設(shè)備),以通過(guò)頁(yè)面重置保持狀態(tài)。單擊設(shè)備后,它將存儲(chǔ)在購(gòu)物袋中。當(dāng)用戶單擊包裝袋中的設(shè)備時(shí),我希望它能夠“刪除”并從本地存儲(chǔ)中刪除?,F(xiàn)在它可以正常工作,以便在UI上顯示它已被刪除,但是當(dāng)頁(yè)面刷新時(shí)它又回來(lái)了,因?yàn)樗栽趌ocalStorage中。我嘗試localStorage.removeItem(deviceTitle)在removeDevice函數(shù)中使用它,但是它似乎沒(méi)有任何作用。這是因?yàn)槲矣衛(wèi)ocalStorage.getItem在componentDidMount?如果是這樣,我該如何進(jìn)行更改以使該removeItem功能正常工作?addDevice() 是在onClick函數(shù)期間調(diào)用的(請(qǐng)讓我知道是否需要查看代碼的這一部分)  addDevice = (e, deviceTitle) => {    const array = Array.from(this.state.bag);    if (array.indexOf(deviceTitle) === -1) {      array.push(deviceTitle);    } else {      return;    }    localStorage.setItem("list", JSON.stringify(array));    this.setState({      bag: array    });  };這是應(yīng)該從本地存儲(chǔ)中刪除設(shè)備的位置removeDevice = (e, deviceTitle) => {    this.setState(prevState => ({      bag: prevState.bag.filter(d => d !== deviceTitle)    }));    localStorage.removeItem(deviceTitle);  };這是存儲(chǔ)設(shè)備的我的componentDidMount()componentDidMount() {    this.search("");    const storedList = JSON.parse(localStorage.getItem("list"));    console.log(storedList);    const bag = storedList;    this.setState({ bag });  }編輯下面添加的更多代碼:  render() {    return (      <div>        <form>          <input            type="text"            placeholder="Search for devices..."            onChange={this.onChange}          />          {this.state.devices.map(device => (            <ul key={device.title}>              <p>                {device.title}{" "}                <i                  className="fas fa-plus"                  style={{ cursor: "pointer", color: "green" }}                  onClick={e => this.addDevice(e, device.title)}                />              </p>            </ul>          ))}以下是其外觀的屏幕截圖: 本地存儲(chǔ)中的 項(xiàng)目,在UI中刪除后的項(xiàng)目, 但是當(dāng)我重置頁(yè)面時(shí),由于未從localStorage刪除設(shè)備,它會(huì)恢復(fù)為第一張圖像
查看完整描述

3 回答

?
汪汪一只貓

TA貢獻(xiàn)1898條經(jīng)驗(yàn) 獲得超8個(gè)贊

刪除項(xiàng)目本身后,只需更換陣列


removeDevice = (e, deviceTitle) => {

    this.setState(prevState => ({

      bag: prevState.bag.filter(d => d !== deviceTitle)

    }));

    // actual localStorage item removing 

        let devicesArray  = JSON.parse(localStorage.getItem("list"))

        devicesArray.splice(devicesArray.indexOf(deviceTitle), 1)

        localStorage.setItem("list", JSON.stringify(devicesArray));

  };

因?yàn)樵O(shè)置項(xiàng)目,如果它在那里替換它的值檢查在這里


查看完整回答
反對(duì) 回復(fù) 2021-05-20
?
慕無(wú)忌1623718

TA貢獻(xiàn)1744條經(jīng)驗(yàn) 獲得超4個(gè)贊

由于已經(jīng)在過(guò)濾數(shù)據(jù)并更新?tīng)顟B(tài),因此可以添加第二個(gè)參數(shù)作為setState回調(diào)。在回調(diào)中,您可以從狀態(tài)中獲取更新的包,并將其設(shè)置為替換localStorage中的值。


你可以這樣


removeDevice = (e, deviceTitle) => {

  this.setState(prevState => ({

    bag: prevState.bag.filter(d => d !== deviceTitle)

  }), () => {

    const { bag } = this.state;

    localStorage.setItem("list", JSON.stringify(bag))

  });

};


查看完整回答
反對(duì) 回復(fù) 2021-05-20
  • 3 回答
  • 0 關(guān)注
  • 682 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)