簡體   English   中英

如何在 React 組件道具上使用 filter 方法?

[英]How can I use the filter method on a React component prop?

我正在嘗試通過數組過濾以提取與特定月份匹配的所有對象。 我已經從父組件傳遞了月份,當我 console.log(month) 在這種情況下它成功返回 4 。

這是我的組件的開頭:

const MonthlyIncome = ({incomeData, month}) => {

    useEffect(()=>{

        console.log(month)
        //returns 4
        console.log('income data', incomeData)

        if (month) {
            const incomes = incomeData?.filter(i=>{
                if(new Date(i?.date).getMonth() === month) {
                    return i
            }})
            console.log('incomes', incomes)
        }
        
    }, [])

console.log('incomes',incomes) 返回一個空數組。

但是,如果我直接在 useEffect 中輸入 4 而不是使用月份,我可以成功地控制台記錄過濾后的數組,如下所示:

const MonthlyIncome = ({incomeData, month}) => {

    
    useEffect(()=>{

        console.log(month)
        //returns 4
        console.log('income data', incomeData)

        if (month) {
            const incomes = incomeData?.filter(i=>{
                if(new Date(i?.date).getMonth() === 4) {
                    return i
            }})
            console.log('incomes', incomes)
        }
        
    }, [])

有誰知道我如何正確地將月份從父組件傳遞到 filter() 方法?

我找到了一個解決方案,我想實際的問題是來自父母的數字是一個字符串,我需要它是一個實際的數字。 所以我用 parseInt() 把它從一個字符串轉換成這樣的數字:

const MonthlyIncome = ({incomeData, month}) => {

    
    useEffect(()=>{
        console.log(month)
        //returns 4
        console.log('income data', incomeData)

        const m = parseInt(month, 10)
       
        const incomes = incomeData?.filter(i=>{
            if(new Date(i?.date).getMonth() === m) {
                return i
        }})
        console.log('incomes', incomes)
        
        
    }, [])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM