我試圖通過洗掉通過過濾器選擇的值的索引來更新我的狀態陣列,但是當我洗掉每個陣列的第一個值時,整個陣列為空,而當我嘗試洗掉任何其他索引時,只有一些為空。我不確定添加功能是否會影響我擁有的狀態,但我從其各自的組件中包含了它。添加值 洗掉陣列中的第一個 值洗掉陣列中的第二個值
const add = () => {
setStockList([...stockList, {Tick:currentStock.symbol,Name:currentStock.name}]);
setEnableRD([...enableRD, false]);
setAlertPercentRD([...alertPercentRD, 1]);
setAlertPriceRD([...alertPriceRD, 1]);
setAlertedRD([...alertedRD, false]);
setPriceOrPercentRD([...priceOrPercentRD, true]);
setVolumeRD([...volumeRD, 0.5]);
setSettings([...settings, false]);
};
const removeThis = (ticker,index) => {
setStockList(
[...stockList].filter((val) => {
if (val.Tick === ticker) return null;
return val;
})
);
setStorePriceAllHistory(
[...storePriceAllHistory].filter((val) => {
if (storePriceAllHistory.indexOf(val) === index) return null;
return val;
})
);
setStockPrice(
[...stockPrice].filter((val)=>{
if(stockPrice.indexOf(val) === index) return null;
return val;
})
)
setEnableRD(
[...enableRD].filter((val) => {
if (enableRD.indexOf(val) === index) return null;
return val;
})
);
setAlertPercentRD(
[...alertPercentRD].filter((val) => {
if (alertPercentRD.indexOf(val) === index) return null;
return val;
})
);
setAlertPriceRD(
[...alertPriceRD].filter((val) => {
if (alertPriceRD.indexOf(val) === index) return null;
return val;
})
);
setAlertedRD(
[...alertedRD].filter((val) => {
if (alertedRD.indexOf(val) === index) return null;
return val;
})
);
setPriceOrPercentRD(
[...priceOrPercentRD].filter((val) => {
if (priceOrPercentRD.indexOf(val) === index) return null;
return val;
})
);
setVolumeRD(
[...volumeRD].filter((val) => {
if (volumeRD.indexOf(val) === index) return null;
return val;
})
);
setSettings(
[...settings].filter((val) => {
if (settings.indexOf(val) === index) return null;
return val;
})
);
};
return (
<>
{stockList.map((val, index) => {
const { Tick, Name } = val;
return (
<div className="stockItemIcon">
<FaTrash
className="trashCan"
onClick={(e) => {
e.stopPropagation();
removeThis(Tick,index)}}
></FaTrash>
</div>
)}
</>)
uj5u.com熱心網友回復:
函式是一個謂詞,用來測驗陣列的每個元素。回傳一個值,該值強制為 true 以保留元素,否則為 false。(來源)
將過濾器回呼函式更改為
[...settings].filter((val,i) => i !== index)
uj5u.com熱心網友回復:
您可以嘗試removeThis通過以下方式替換條件陳述句來編輯您的定義:
setStockList(
[...stockList].filter(val => (val.Tick !== ticker));
setStorePriceAllHistory(
[...storePriceAllHistory].filter(val => (storePriceAllHistory.indexOf(val) !== index));
setStockPrice(
[...stockPrice].filter(val => (stockPrice.indexOf(val) !== index));
setEnableRD(
[...enableRD].filter(val => (enableRD.indexOf(val) !== index));
setAlertPercentRD(
[...alertPercentRD].filter(val => alertPercentRD.indexOf(val) !== index));
setAlertPriceRD(
[...alertPriceRD].filter(val => alertPriceRD.indexOf(val) === index));
setAlertedRD(
[...alertedRD].filter(val => (alertedRD.indexOf(val) !== index));
setPriceOrPercentRD(
[...priceOrPercentRD].filter(val =>(priceOrPercentRD.indexOf(val) !== index));
setVolumeRD(
[...volumeRD].filter(val => (volumeRD.indexOf(val) !== index));
setSettings(
[...settings].filter(val => (settings.indexOf(val) !== index));
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/359498.html
標籤:javascript 反应
