如何处理“无法读取未定义的属性‘映射’”react/redux

2024-02-18

我再一次面临一个非常常见的错误"Cannot read property 'map' of undefined"。我有一个项目(电影)的初始列表,在 a 中正确加载<ul><li></li></ul>。但是,在通过单击按钮发送我的操作后,错误发生了。我实际上可以在我的 redux 开发工具中看到更新的状态(即使有错误),但我也可以看到更改不会影响我的 React 开发工具中的存储状态。

这是我的减速器:

export default function moviesReducer(state = {items}, action) {
  if(action.type === 'SET_MOVIES_FILTER') {
    return update(state.items, {$splice: [[1,3]]})
  }
    return state;
  }

这是我的物品清单(来自这里post https://stackoverflow.com/questions/38133137/how-to-filter-and-sort-the-same-array-of-object-state-in-redux/38151733#38151733) :

let items = [{
  title: 'Mad max',
  year: 2015,
  rating: 8,
  genre: 'fantasy',
}, {
  title: 'Spider man 2',
  year: 2014,
  rating: 7,
  genre: 'fantasy',
}, {
  title: 'Iron man 3',
  year: 2013,
  rating: 7,
  genre: 'fantasy',
}, {
  title: 'Dumb and Dumber To',
  year: 2014,
  rating: 5,
  genre: 'comedy',
}, {
  title: 'Ted 2',
  year: 2015,
  rating: 6,
  genre: 'comedy',
}];

这是我的行动:

export const SetMoviesFilter = () => {
  return {
    type: 'SET_MOVIES_FILTER'
  };
};

这是我的组件:

const movieTable = ({testmovie, movieTable }) => {

        return (

        <div>
            <button onClick={movieTable}>testbutton</button> 
            <ul>
            {testmovie.map((m, i) =>
        <li key={i}>{m.year} - {m.title}.({m.genre}) - {m.rating}</li>
      )}
            </ul>
        </div> )
    }

function mapStateToProps(state) {
  return {
      testmovie: state.moviesReducer.items

  };
};


const mapDispachToProps = (dispatch) => {
    return {
  movieTable: () => {dispatch (SetMoviesFilter());
        },
    };
};


const AppMovie = connect(mapStateToProps, mapDispachToProps)(movieTable);

我哪里错了?我应该怎么办 ?我不知道这是否相关,但我无法做出我的jsbin https://jsbin.com/qolede/edit?html,console,output work.

thanks.


您的初始状态为state.moviesReducer.items is undefined.

在你的减速机中export default function moviesReducer(state = {items}, action),检查一下这是哪里items来自(哪里。最有可能的是undefined当商店初始化时。您可以给它一个初始值[]

您还可以通过包装来避免此问题<ul>在 if 语句中

if (testmovie) {
  // do your testmovie render here.
}

Edit:

看起来您的减速器映射正确。所以state.moviesReducer总是被定义的。

如果您的初始项目列表甚至无法正确加载,则意味着您的items对象导致了错误。

如果您的初始列表加载正确,并且仅在您分派列表后才会发生错误SET_MOVIE_FILTER行动,意味着你的update(state.items, {$splice: [[1,3]]})正在改变你的状态形态。

我不知道你从哪里得到这个update功能。但我猜你应该这样做return { items: update(state.items, {$splice: [[1,3]]})}

这就是我调试代码的方式。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何处理“无法读取未定义的属性‘映射’”react/redux 的相关文章

随机推荐

  • Javax ImageIO IIOException 显然没有原因

    大家好 我有一个 Java 问题 对于我的高级研究课程 我已经基本完成 但我只需要分析我生成的图像中的一些数据 我不想将其标记为家庭作业 因为它不是任何必需作业的一部分 这是我自己想出的来收集结果的东西 我编写了一个程序来逐像素比较两个图像
  • 全新安装后如何登录并验证 Postgresql?

    在 mint ubuntu 上新安装了 postgres 8 4 如何为 postgres 创建用户并使用 psql 登录 当我输入 psql 时 它只是告诉我 psql FATAL Ident authentication failed
  • 如何动态添加swift字典中的值

    我在我的 swift 类中声明了一个字典 如下所示 var profileDetail Dictionary
  • 更新到 IntelliJ 2017.1 导致 JAVA_TOOL_OPTIONS 打印

    今天早上 我更新到 IntelliJ IDEA 2017 1 当我运行任何测试 甚至运行我制作的 hello world 项目时 控制台都会打印一条消息 说明Picked up JAVA TOOL OPTIONS agentpath C w
  • Yii 和 cron 作业

    我创建了一个需要每月运行的 Yii 命令 如果我转到受保护的文件夹并手动运行命令 protected yiic ganadores 效果很好 我尝试将以下命令行添加到etc cron hourly and etc crontab没有成功 u
  • “针对接口而非对象进行编码”的 Python 版本是什么?

    受到一个很棒的问题 以及一堆很棒的答案 的启发here https stackoverflow com questions 4456424 what do programmers mean when they say code agains
  • 用 Java 劫持音频?

    我一直在尝试修改一些发现的代码在本页底部 http www java tips org java se tips javax sound capturing audio with java sound api html为了用Java劫持系统
  • 我可以在 Java Swing 中使用 CSS 吗?

    有什么方法可以在使用 Java Swing 的应用程序中重用我的 CSS 吗 Java swing 通常不是为了将其控件与其表示形式分离而构建的 但是有一个名为Jaxx http today java net pub a today 200
  • Matplotlib 散点图和彩色图的问题

    我正在开发一个项目 该项目涉及将颜色图应用于 matplotlib 中生成的散点图 我的代码按预期工作 除非生成的散点图恰好有四个点 下面的代码对此进行了说明 import numpy as np import matplotlib pyp
  • 使用 StageWebView.loadString() 在 AIR for iOS 上显示 Google 地图

    我正在尝试使用StageWebView显示使用 Javascript API 生成的 Google Maps 地图 有什么原因导致它无法在 iOS 上呈现吗 它适用于 Android 和 AIR 模拟器 但不适用于 iOS 设备 我也可以查
  • 服务调用时出现 WCF 超时异常

    我有一个 WCF 服务 实时出现以下错误 Event code 3005 Event message An unhandled exception has occurred Event time 19 06 2012 10 39 09 Ev
  • 使用 python 从网站上抓取 excel,并隐藏 _doPostBack 链接 url

    在过去的几天里 我试图废弃以下网站 链接粘贴在下面 该网站在表格中提供了一些 Excel 和 pdf 我能够成功地为主页做到这一点 这些 excel pdf 总共有 59 页需要废弃 到目前为止 在我见过的大多数网站中 网站 URL 中都有
  • 更改 Windows 中的控制台字体

    有没有办法在 python 2 6 中更改 Windows 中的控制台字体 我使用的是 Windows 7 ie import os os console font Lucida Console 更多信息和问题 我查看了Windows AP
  • Scala 中元组和列表[Any] 的区别?

    目前 我正在学习Scala并阅读这本书Scala 编程其中说 与数组或列表不同 元组可以保存不同类型的对象 例如 以下元组包含 Int String 和 Float val tup 1 hello 4 4 书中再次指出 如果您想在列表 数组
  • python 构建动态增长的真值表

    我的问题很简单 如何在Python中以优雅的方式构建动态增长的真值表 for n 3 for p in False True for q in False True for r in False True print 0 1 2 forma
  • Excel .NET COM - 自动化错误。该系统找不到指定的文件

    我有一个 Excel 中的 VBA 使用的 NET 2 0 COM 对象 它在我的开发机器上运行良好 但是当尝试在干净的虚拟机工作站上使用它时 我收到此错误 自动化错误 该系统找不到指定的文件 该 dll 已通过 regasm tlb co
  • 在同一台机器性能问题上将工作负载拆分为两个单独的 JVM

    高 我想知道是否有人可以就我正在思考的设计问题提供一些意见 现在我有一个 java 程序 当它对数据流执行大量计算时 每 1 秒我的 CPU 使用率就会飙升至 85 我想利用双处理器 但不想重新设计程序以使其成为多线程 因为我花了很多时间调
  • 如何在 Hibernate + Spring 中使用 group_concat

    我该如何使用addSqlFunction 在春天 当我使用 hibernate cfg xml 文件配置 hibernate 时 或者还有其他方法可以使用group concat吗 如果您使用 Spring 的 HibernateTempl
  • 我可以停止 Scala REPL 中无限循环的执行吗?

    我可以停止 Scala REPL 中无限循环的执行吗 输入此内容并尝试在不退出 REPL 的情况下停止它 while true 我认为 Ctrl C 之类的东西会起作用 这取决于你的scala版本 如果你已经使用 scala 2 9 只需使
  • 如何处理“无法读取未定义的属性‘映射’”react/redux

    我再一次面临一个非常常见的错误 Cannot read property map of undefined 我有一个项目 电影 的初始列表 在 a 中正确加载 ul li li ul 但是 在通过单击按钮发送我的操作后 错误发生了 我实际上