React native react native ListView中的奇怪错误

React native react native ListView中的奇怪错误,react-native,redux,react-native-listview,React Native,Redux,React Native Listview,请阅读完整的问题,因为了解这种行为可能会有所帮助 我有一个包含任务列表的分区列表视图。列表视图有三个部分(最近、以后和过去)。每个任务都可以有一个用户列表,当任务完成时应通知这些用户。当任务标记为已完成时,它将移动到过去部分。当一项任务被标记为已完成时,下面的事情就会发生 将任务标记为在redux存储中完成 如果任务有参与者,则向参与者发送远程通知 当任务标记为已完成时,将更新redux存储,从而触发重新呈现列表视图。第二步发生在根据日志重新呈现列表视图之后 发生的情况是,第二步是由不同任务的道

请阅读完整的问题,因为了解这种行为可能会有所帮助

我有一个包含任务列表的分区列表视图。列表视图有三个部分(最近、以后和过去)。每个任务都可以有一个用户列表,当任务完成时应通知这些用户。当任务标记为已完成时,它将移动到
过去
部分。当一项任务被标记为已完成时,下面的事情就会发生

  • 将任务标记为在redux存储中完成
  • 如果任务有参与者,则向参与者发送远程通知
  • 当任务标记为已完成时,将更新redux存储,从而触发重新呈现
    列表视图。第二步发生在根据日志重新呈现
    列表视图之后

    发生的情况是,第二步是由不同任务的道具触发的,而不是标记为已完成的任务。这就好像
    ListView
    项被重用,而先前用于标记为“完成”的任务的
    ListView
    项现在被用于其他一些项,其余的代码则使用其他任务的道具运行,这非常奇怪。下面是它在代码中的外观

      changeTaskStatus = () => {
        this.props.dispatch(ActionCreators.markTaskDone(this.props.id))
    
        // A re-render is triggered once the above action is dispatched and the
        // this.props.id in the next step is not the one that the user marked as done
        this.props.dispatch(ActionCreators.notifyParticipants(this.props.id))
      }
    

    我将尝试创建一个展示此问题的示例项目。如果您有关于此行为的任何信息,请发布答案或评论。

    您应该使用
    列表视图
    绑定数据,如下所示

    因此,在更新列表后,您需要在函数
    changeTaskStatus
    中将
    ID
    传递给,并更新列表视图


    您还可以创建
    ID
    的单独对象,并通过自定义逻辑对其进行管理

    我想这意味着我需要将所有
    道具
    存储在一个对象中,并使用该对象访问数据。这不是很直观,有点破坏了javascript的闭包行为。我想我不明白你的意思。“renderRow”方法已绑定到“this”当用户单击一项任务时,调用changeTaskStatus方法,并且任务列表由于将任务标记为已完成而重新呈现,“this”在调用过程中指向另一个对象以通知参与者。我认为当您调用this.props.dispatch(ActionCreators.notifyParticipants)(this.p‌如果你通过了这个。props。id可能是你在这里弄错了,所以需要在这里检查一下,如果你在这里没有得到完美的id,那么就用我的解决方案