redux 筛选数组:未捕获的类型错误:无法读取未定义的属性(阅读'toLowerCase')

9bfwbjaz  于 2022-11-24  发布在  其他
关注(0)|答案(1)|浏览(126)

尝试在一个切片中设置一个过滤/搜索函数,但总是得到这个错误。我检查了文档,教程,所有我能想到的,但仍然得到相同的结果。
下面是我的代码,附上截图为好的措施,以及:

import { createSlice } from "@reduxjs/toolkit";

const initialState = {
    filteredEntries: []
}

const filterSlice = createSlice ({
    name: "filter",
    initialState,
    reducers: {
        FILTER_ENTRIES(state, action) {
            const {entries, search} = action.payload
            const tempEntries = entries.filter((entry) => 
                entry.title.toLowerCase().includes(search.toLowerCase()) || entry.author.toLowerCase().includes(search.toLowerCase())
            )
            state.filteredEntries = tempEntries
        }
    }
})

export const {FILTER_ENTRIES} = filterSlice.actions

export const selectFiltered = (state) => state.filter.filteredEntries;

export default filterSlice.reducer

尝试过将参数传递到数组中,使用不同的变量代替“entry/entries”,使用entry?.title.toLowerCase()

9rbhqvlz

9rbhqvlz1#

如果searchentries为空,则可能发生这种情况。
请确保这两个变量都有值,或者添加可选运算符以确保处理空值

entry?.title?.toLowerCase().includes(search?.toLowerCase())

值应该是这样的

entries = [{title: 'some value'}]
search = 'some value'

相关问题