У меня странная проблема с Redux и React.Состояние изменяется должным образом, и в mapStateToProps
я также получаю правильное новое состояние, но после сопоставления компонент не будет перерисован.
Таким образом, компонент не перерисовывается:
import React, { Component } from 'react';
import { connect } from 'react-redux';
class ListItem extends Component {
render() {
return (<li>{this.props.item.text}</li>);
}
}
const mapStateToProps = (state, ownProps) => {
return {
item: state.test.byID[ownProps.itemID]
};
}
export default connect(mapStateToProps)(ListItem);
Но если я разделю предмет, компоненты переставят:
import React, { Component } from 'react';
import { connect } from 'react-redux';
class ListItem extends Component {
render() {
return(<li>{this.props.text}</li>);
}
}
const mapStateToProps = (state, ownProps) => {
return {
id: state.test.byID[ownProps.itemID].id,
text: state.test.byID[ownProps.itemID].text
};
}
export default connect(mapStateToProps)(ListItem);
Понятия не имею почему.
Редуктор:
const startState = {
byID: {
'a1': {id: 'a1', text: 'test1'},
'a2': {id: 'a2', text: 'test2'},
'a3': {id: 'a3', text: 'test3'},
'a4': {id: 'a4', text: 'test4'},
'a5': {id: 'a5', text: 'test5'},
'a6': {id: 'a6', text: 'test6'},
'a7': {id: 'a7', text: 'test7'},
},
all: ['a1', 'a2','a3', 'a4', 'a5', 'a6', 'a7']
};
export default function reducer(state = startState, action) {
switch (action.type) {
case 'ADD_TEXT':
const newState = {...state};
newState.byID[action.id].text = action.text;
return newState
default:
return state;
}
}
Есть идеи?