在React應用程序中使用.filter()篩選出特定值

我目前正在構建一個組件,它有幾個方面。它允許您將項目列表添加到數組并動態顯示。然后,它允許您通過單擊某個項目的特定“刪除”按鈕來刪除該項目。

因此,我的組件中有四個狀態道具:

  • 當前列表:用于決定要添加到完整列表數組中的內容
  • 設置當前列表
  • 完整列表:完整數組
  • 設置完整列表

但是,如果數組中有兩個或多個相同的值,當您單擊其中一個值的刪除按鈕時,它會刪除這兩個值。

這是因為我只是在我的篩選函數中進行檢查,以確保傳遞給它的項等于傳遞給整個函數的值:

const deleteFromList = (e) => {

        let fullList = props.fullListState
        let setFullList = props.setFullListState

        let filteredArray = fullList.filter(item => item !== e)

        setFullList(filteredArray)
    }

我需要更改“filteredArray”變量,以便它檢查項的其他屬性(可能是數組中項的索引?)或者添加另一個簽入。

但我在這里找不出最好的方法。有人有什么建議嗎?

以下是供參考的完整組件:

const FormListInput = (props) => {

    const onChange = (e) => {
        props.setCurrentListState(e.target.value)
    }

    const addToList = () => {
        let setFullList = props.setFullListState
        let current = props.currentListState
        let setCurrent = props.setCurrentListState

        setFullList(full => [...full, current])
        setCurrent('')
    }

    const deleteFromList = (e) => {

        let fullList = props.fullListState
        let setFullList = props.setFullListState

        let filteredArray = fullList.filter(item => item !== e)

        setFullList(filteredArray)
    }

    return (
        <>
            <label className="form-list-label">{props.label}</label>
            <div className="form-list-input-container">
                <input className="form-list-input" type="text" onChange={onChange} value={props.currentListState} />
                <button className="form-list-add-button" onClick={addToList}>Add</button>
            </div>
            { props.fullListState.length === 0 ? null : props.fullListState.map(x => {
                return <div className="form-list-input-container" key={props.fullListState[x]}>
                    <p className="form-list-input-paragraph">{x}</p>
                    <button className="form-list-delete-button" onClick={() => deleteFromList(x)}>Delete</button>
                </div>
            }) }
        </>
    )
}
? 最佳回答:

在這種情況下,您應該按索引刪除這些選定項。

每次刪除后它都會re-render顯示整個列表,所以您不必擔心之后會出現索引沖突。

const FormListInput = (props) => {

    const onChange = (e) => {
        props.setCurrentListState(e.target.value)
    }

    const addToList = () => {
        let setFullList = props.setFullListState
        let current = props.currentListState
        let setCurrent = props.setCurrentListState

        setFullList(full => [...full, current])
        setCurrent('')
    }

    const deleteFromList = (index) => {

        let fullList = props.fullListState
        let setFullList = props.setFullListState

        let filteredArray = fullList.filter((item, currentIndex) => currentIndex !== index)

        setFullList(filteredArray)
    }

    return (
        <>
            <label className="form-list-label">{props.label}</label>
            <div className="form-list-input-container">
                <input className="form-list-input" type="text" onChange={onChange} value={props.currentListState} />
                <button className="form-list-add-button" onClick={addToList}>Add</button>
            </div>
            { props.fullListState.length === 0 ? null : props.fullListState.map((x, index) => {
                return <div className="form-list-input-container" key={props.fullListState[x]}>
                    <p className="form-list-input-paragraph">{x}</p>
                    <button className="form-list-delete-button" onClick={() => deleteFromList(index)}>Delete</button>
                </div>
            }) }
        </>
    )
}
主站蜘蛛池模板: 精品国产AV一区二区三区| 亚洲AV成人一区二区三区在线看| 97一区二区三区四区久久| 一区二区在线视频免费观看| 3D动漫精品啪啪一区二区下载 | 2022年亚洲午夜一区二区福利| 国产一区二区三区在线免费观看| 人妻av无码一区二区三区| 亚洲日韩国产精品第一页一区| 精品视频一区二区三区在线播放| 国产SUV精品一区二区88| 色偷偷av一区二区三区| 国产伦精品一区二区三区| 国产成人精品久久一区二区三区av| 另类ts人妖一区二区三区| 亚洲AV无码一区二区三区电影| 亚洲一区中文字幕在线电影网| 人妻少妇久久中文字幕一区二区| 国产熟女一区二区三区四区五区 | 久久精品国产一区| 红杏亚洲影院一区二区三区| 一区二区三区在线观看中文字幕| 日本精品夜色视频一区二区| 福利一区二区三区视频午夜观看| 国产一区二区三区在线观看免费 | 国产精品美女一区二区视频| 中文字幕在线观看一区二区| 中文字幕人妻无码一区二区三区 | 一级特黄性色生活片一区二区| 国产一区高清视频| 国产成人综合精品一区| 综合久久久久久中文字幕亚洲国产国产综合一区首 | 久久精品视频一区二区三区| 亚洲无删减国产精品一区| 亚洲福利一区二区三区| 久久精品免费一区二区喷潮| 国产激情一区二区三区在线观看 | 亚洲第一区二区快射影院| 国产乱码精品一区二区三区香蕉 | 中文字幕日韩一区| 无码人妻精品一区二区三区久久久|