【发布时间】:2017-08-10 04:54:10
【问题描述】:
请阅读完整的问题,因为了解这种行为可能会有所帮助。
我有一个包含任务列表的分段 ListView。列表视图包含三个部分(最近、以后和过去)。每个任务都可以有一个用户列表,当任务完成时应该通知这些用户。当一个任务被标记为完成时,它被移动到Past 部分。当一项任务被标记为完成时,会发生以下事情
- 在 redux 商店中将任务标记为已完成
- 如果任务有参与者,向参与者发送远程通知
当任务被标记为完成时,redux 存储被更新,这会触发ListView 的重新渲染。第二步发生在ListView 根据日志重新渲染之后。
发生的情况是,第二步是由不同任务的道具触发的,而不是被标记为已完成的任务。就好像 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))
}
我将尝试创建一个显示此问题的示例项目。如果您有任何关于此行为的信息,请发表答案或评论。
【问题讨论】:
-
我想这意味着我需要将所有
props存储在一个对象中并使用该对象来访问数据。它不是很直观,并且有点破坏 javascript 的关闭行为。
标签: react-native redux react-native-listview