請閱讀完整的問題,因爲它可能有助於瞭解此行爲。反應本機中的奇怪錯誤ListView
我有一個分段的ListView,其中包含一個任務列表。列表視圖有三個部分(Recent,Later和Past)。每個任務都可以有一個用戶列表,當任務完成時應該通知用戶。標記爲完成時,任務將移至Past
部分。當任務被標記爲已完成,下面作爲終極版店內
- 馬克任務如果任務的參與者,發送遠程通知參與者
當該任務被標記爲完成,還原存儲更新,觸發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))
}
我將嘗試創建一個展示此問題的示例項目。如果您有任何有關此行爲的信息,請發佈答案或評論。
是的,我會知道一點關於它,請確認它總是與最後一個任務的道具觸發(在列表視圖中的最後一個意義上) –
我想這意味着我需要將所有的「道具」存儲在一個對象中,並使用該對象來訪問數據。它不是非常直觀,並且打破了javascript的閉包行爲。 –