Redux应用程序:无法读取未定义的属性“ filter”

用户名

我的减速器中有错误: 在此处输入图片说明

props-actual这是飞机起飞或到达的时间,此属性位于我的API中API具有以下结构:

{"body":{
"departure":[{actual: value},{term: value}],
"arrival":[{....},{......}]}
}

码:

aircrafts.js(减速机)

import { searchFilter } from "../components/app";

export function reducer(state = {}, action) {
  switch (action.type) {
    case "SET_SHIFT":
      return Object.assign({}, state, {
        shift: action.shift
      });
    case "SET_SEARCH":
      return Object.assign({}, state, {
        search: action.search.toLowerCase()
      });
    case "RUN_FILTER":
      var newData = state.data[action.shift].filter(x => {
        return (
          x.actual &&
          x.actual.includes(
            state.day
              .split("-")
              .reverse()
              .join("-")
          )
        );
      });
      return Object.assign({}, state, {
        shift: action.shift || state.shift,
        search: action.search || state.search,
        filteredData: searchFilter(state.search, newData)
      });
    case "LOAD_DATA_START":
      return Object.assign({}, state, {
        day: action.day
      });
    case "LOAD_DATA_END":
      var newData = action.payload.data[state.shift].filter(x => {
        return (
          x.actual &&
          x.actual.includes(
            action.payload.day
              .split("-")
              .reverse()
              .join("-")
          )
        );
      });
      return Object.assign({}, state, {
        data: action.payload.data,
        shift: Object.keys(action.payload.data)[0],
        filteredData: searchFilter(state.search, newData)
      });
    default:
      return state;
  }
}

app.js(主要组件)

import React from "react";
import { Component } from "react";
import { connect } from "react-redux";
import { fetchData } from "../actions";
import TableData from "./TableData";
import TableSearch from "./TableSearch";
import Header from "./Header";
import Footer from "./Footer";
import "./app.css";

export function searchFilter(search, data) {
  return data.filter(n => n.term.toLowerCase().includes(search));
}

const days = ["23-08-2019", "24-08-2019", "25-08-2019"];

class Root extends React.Component {
  componentDidMount() {
    this.props.onFetchData(days[this.props.propReducer.day]);
  }

  render() {
    const { onFilter, onSetSearch, onFetchData } = this.props;

    const { search, shift, data, filteredData } = this.props.propReducer;

    console.log(filteredData);

    return (
      <div>
        <Header/>
        <h1>SEARCH FLIGHT</h1>
        <TableSearch
          value={search}
          onChange={e => onSetSearch(e.target.value)}
          onSearch={() => onFilter()}
        />

        {days &&
          days.map((day, i) => (
            <button
              key={day}
              onClick={() => onFetchData(day)}
              className={i === day ? "active" : ""}
            >
              {day}
            </button>
          ))}
        <br />
            <div className="buttonShift">
        {data &&
          Object.keys(data).map(n => (

            <button 
              data-shift={n}
              onClick={e => onFilter({ shift: e.target.dataset.shift })}
              className={n === shift ? "active" : "noActive"}
            >
              {n} 
            </button>
          ))}
          </div>
        {data && <TableData data={filteredData} />}
        <Footer/>
      </div>
    );
  }
}

export const ConnectedRoot = connect(
  state => state,
  dispatch => ({
    onFilter: args => dispatch({ type: "RUN_FILTER", ...args }),
    onSetSearch: search => dispatch({ type: "SET_SEARCH", search }),
    onFetchData: day => dispatch(fetchData(day))
  })
)(Root);

顺便说一句,函数searchFilter是写为属性term而不是属性actual也许问题部分是由于这一点,但不仅如此,因为我试图取代termactual,但错误依然存在。

如何解决这个错误?

四十亿

给定onFilter动作创建者app.js

onFilter: args => dispatch({ type: "RUN_FILTER", ...args })

在没有第一个参数的情况下调用时:

<TableSearch ... onSearch={() => onFilter()} />

然后在airplanes.jsreducer中,action.shift是undefined,所以state.data[action.shift]也是undefined,并且state.data[action.shift].filter是TypeError。

要解决此问题,您可以使用默认值

state.data[action.shift || state.shift].filter

但是,在TableSearch.js您的内部还有另一个问题

<button ... onClick={() => onSearch(value)}>

因此,您不应该忽略中的值app.js

<TableSearch ... onSearch={(value) => onFilter({search: value})} />

...并根据业务逻辑action.search || state.search在内部使用.filter(...)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

TypeError:无法读取未定义的属性“ filter”-数据对象

来自分类Dev

vuetify表自定义排序“ TypeError:无法读取未定义的属性'filter'”

来自分类Dev

Apexcharts-ReactJs-实时-无法读取未定义的属性“ filter”

来自分类Dev

TypeError:无法读取未定义的属性'filter'帮助我

来自分类Dev

Discord bot返回“ TypeError:无法读取未定义的属性'filter'”

来自分类Dev

错误[应用程序路由器]类型错误:无法读取未定义的属性'attrToRemove'

来自分类Dev

Webpacked Angular2应用程序TypeError:无法读取未定义的属性“ getOptional”

来自分类Dev

应用程序脚本错误:无法读取未定义的属性“ length”

来自分类Dev

TypeError:无法读取角度应用程序中未定义的属性“ 0”

来自分类Dev

Webpacked Angular2应用程序TypeError:无法读取未定义的属性“ getOptional”

来自分类Dev

类型错误:无法读取 Angular 应用程序中未定义的属性“长度”

来自分类Dev

使用玩笑测试应用程序时无法读取未定义的属性“默认”

来自分类Dev

如何解决TypeError:将lodash find函数替换为本机JS筛选器函数后,无法读取未定义错误的属性“ filter”?

来自分类Dev

TypeError:在Meteor应用程序中使用tsega:bootstrap3-datetimepicker时,无法读取未定义的属性“ date”

来自分类Dev

React.js应用程序中的Mapbox-gl,TypeError:无法读取未定义的属性“ setFeatureState”

来自分类Dev

我该如何解决无法读取reactjs单页应用程序中未定义的属性“ includes”?

来自分类Dev

React-Redux 程序返回“TypeError:无法读取未定义的属性‘map’”

来自分类Dev

Redux:TypeError:无法读取未定义的属性“模式”

来自分类Dev

React Redux:无法读取未定义的属性“ props”

来自分类Dev

React-Redux:无法读取未定义的属性“ closed”

来自分类Dev

无法读取Redux中未定义的属性“类型”

来自分类Dev

redux 表单验证 - 无法读取未定义的属性“某些”

来自分类Dev

Redux 获取无法读取未定义的属性映射

来自分类Dev

无法读取未定义的属性“getState” - Redux

来自分类Dev

在WordPress上从引导程序应用轮播时,无法读取未定义的属性“切片”

来自分类Dev

无法读取未定义的属性“ noConflict”(Chrome扩展程序)

来自分类Dev

获取未定义的引导程序的“无法读取属性'offsetwidth”

来自分类Dev

chrome扩展程序无法读取未定义的属性“ currentScript”

来自分类Dev

.Filter()删除未定义的数组

Related 相关文章

  1. 1

    TypeError:无法读取未定义的属性“ filter”-数据对象

  2. 2

    vuetify表自定义排序“ TypeError:无法读取未定义的属性'filter'”

  3. 3

    Apexcharts-ReactJs-实时-无法读取未定义的属性“ filter”

  4. 4

    TypeError:无法读取未定义的属性'filter'帮助我

  5. 5

    Discord bot返回“ TypeError:无法读取未定义的属性'filter'”

  6. 6

    错误[应用程序路由器]类型错误:无法读取未定义的属性'attrToRemove'

  7. 7

    Webpacked Angular2应用程序TypeError:无法读取未定义的属性“ getOptional”

  8. 8

    应用程序脚本错误:无法读取未定义的属性“ length”

  9. 9

    TypeError:无法读取角度应用程序中未定义的属性“ 0”

  10. 10

    Webpacked Angular2应用程序TypeError:无法读取未定义的属性“ getOptional”

  11. 11

    类型错误:无法读取 Angular 应用程序中未定义的属性“长度”

  12. 12

    使用玩笑测试应用程序时无法读取未定义的属性“默认”

  13. 13

    如何解决TypeError:将lodash find函数替换为本机JS筛选器函数后,无法读取未定义错误的属性“ filter”?

  14. 14

    TypeError:在Meteor应用程序中使用tsega:bootstrap3-datetimepicker时,无法读取未定义的属性“ date”

  15. 15

    React.js应用程序中的Mapbox-gl,TypeError:无法读取未定义的属性“ setFeatureState”

  16. 16

    我该如何解决无法读取reactjs单页应用程序中未定义的属性“ includes”?

  17. 17

    React-Redux 程序返回“TypeError:无法读取未定义的属性‘map’”

  18. 18

    Redux:TypeError:无法读取未定义的属性“模式”

  19. 19

    React Redux:无法读取未定义的属性“ props”

  20. 20

    React-Redux:无法读取未定义的属性“ closed”

  21. 21

    无法读取Redux中未定义的属性“类型”

  22. 22

    redux 表单验证 - 无法读取未定义的属性“某些”

  23. 23

    Redux 获取无法读取未定义的属性映射

  24. 24

    无法读取未定义的属性“getState” - Redux

  25. 25

    在WordPress上从引导程序应用轮播时,无法读取未定义的属性“切片”

  26. 26

    无法读取未定义的属性“ noConflict”(Chrome扩展程序)

  27. 27

    获取未定义的引导程序的“无法读取属性'offsetwidth”

  28. 28

    chrome扩展程序无法读取未定义的属性“ currentScript”

  29. 29

    .Filter()删除未定义的数组

热门标签

归档