我試圖實現以下目標:有一個文本字段,並且一旦用戶輸入文本,創建一個對象與文本分配給一個名爲'commentText',它是位於'評論'數組是在'todos'數組的對象(todo [0])中。 'commentInput'只是輸入到文本字段中的輸入的臨時存儲,要分配給'todo [0]'對象的'comments'數組的'commentText'。當調用'this.props.actions.updateComment(event.target.value)'時,爲什麼我會丟失當前的對象狀態?
我通過以下檢索當前狀態對象:
const mapStateToProps=(state, ownProps)=>({
todo:state.todos.filter(todo=>todo.id==ownProps.params.id)
});
,並通過調度和行動:
function mapDispatchToProps(dispatch){
return{
actions: bindActionCreators(actions, dispatch)
}
所以檢索對象「待辦事項」有一個名爲註釋的數組屬性。我有一個具有一個文本字段:
onChange={this.handleCommentChange.bind(this)}
其作用:
handleCommentChange(event){
this.props.actions.updateComment(event.target.value)
}
handleCommentChange之前被調用時,對象 '待辦事項[0]' 首先正確地提取:
但是,一旦文本輸入到文本字段中,onChange = {this.handleCommentChange.bind(this)}被調用,突然,'todo [0]'狀態全部丟失(如s hown在 '下一個狀態' 日誌):
可能是什麼問題?試圖解決它幾個小時,但仍然卡住。任何指導或見解將不勝感激。先謝謝你。
編輯**:
{
this.props.newCommentsArray.map((comment) => {
return <Comment key={comment.id} comment={comment} actions={this.props.actions}/>
})
}
EDIT 2 **
case 'ADD_COMMENT':
return todos.map(function(todo){
//Find the current object to apply the action to
if(todo.id === action.id){
//Create a new array, with newly assigned object
return var newComments = todo.comments.concat({
id: action.id,
commentTxt: action.commentTxt
})
}
//Otherwise return the original array
return todo.comments
})
謝謝你的見解。有沒有辦法記錄它或查看它是否正確更新? –
我在https://github.com/markerikson/redux-ecosystem-links/blob/master/devtools.md列出了許多Redux調試和開發工具,可能有用。除此之外,如果您可以發佈Reducer的代碼,它可能會有所幫助。 – markerikson
這是一個要點:https://gist.github.com/jaewonch/0c52907c06fea42503c5f62bcfbbb56d,我在下面提供了一個評論以獲得更多的解釋。謝謝! –