Ich habe einen Speicher, der actions
enthält, diese Aktionen sollen durch jedes Mal durchlaufen werden, wenn ein neuer hinzugefügt wird.React componentWillReceiveProps wird Requisiten erhalten, die nicht ausgelöst werden, wenn redux state updates
Ich habe eine Komponente MessageListView
, die in einem übergeordneten namens MessageView
befindet. Wenn eine neue Aktion zu meinem socketActions.queue
Array hinzugefügt wird, soll die componentWillRecieveProps
auslösen, aber es tut es nicht. Hier
ist, was mein Minderer wie folgt aussieht:
/* Reducer */
const initialState = {
queue: [{
type: 'alert',
action: 'alert',
completed: false, // Set to true or just delete this object when the action has been completed
data: {
message: "the data object dynamically changes based on the type"
}
}]
};
export default (state = initialState, action) => {
switch (action.type) {
case ADD_ACTION:
let queue = state.queue
// action.data['completed'] = false
queue.push(action.data)
console.log("Just updated queue", action.data)
return {
...state,
queue: queue,
latestAction: new Date()
}
Meine Komponente ist mit dem Speicher wie folgt angeschlossen:
function mapStateToProps(state){
console.log(state, "State inside messagelistview.js")
return {
actionsQueue: state.socketActions.queue,
latestAction: state.socketActions.latestAction
}
};
const mapDispatchToProps = (dispatch) => {
return bindActionCreators({ completeAction }, dispatch);
};
export default connect(
mapStateToProps,
mapDispatchToProps
)(MessageListView);
Also, wenn ich eine neue ADD_ACTION
Aktion versenden, mein Zustand Updates & redux-logger
druckt den neuen und alten Staat, der mir sagt, dass sie die gleichen sind ?!. Ich weiß nicht, warum es das tun würde, nachdem ich das LatestAction Wert & Queue-Array geändert habe. Deshalb funktioniert das componentWillRecieveProps nicht, aber ich kann nicht herausfinden, warum der Zustand derselbe ist ?!
Wenn Sie Immutable.js verwenden, Sie neigen dazu, mehr in diese Probleme nicht ausgeführt werden. Meiner Ansicht nach ist das Ändern der Objekte von immutable.js sauberer als das Verwenden von Dekonstruktionen und Literalen. – stinodes