Я не могу заставить свой компонент повторно выполнить рендеринг при изменении состояния. Я довольно уверен, что я не мутирую государство.
компонент (Домен)
...
<Add
onClick={() => {
domain.routes.push({
from: 'foo',
to: 'bar'
});
this.props.setDomain(this.props.domainIndex, domain);
}} />
...
редуктор
case 'SET_DOMAIN':
let tmpState = {...state}
tmpState.domains[action.index] = action.value;
return {...tmpState}
действие
export const setDomain = (index, domain) => ({
type: 'SET_DOMAIN',
value: domain,
index: index
});
контейнер
import { connect } from 'react-redux';
import { setDomain, setRoute } from '../actions';
import Domain from '../components/pages/domain';
const mapStateToProps = state => ({
domains: state.domains
});
const mapDispatchToProps = dispatch => ({
setDomain: (index, domain) => dispatch(setDomain(index, domain)),
setRoute: (domainIndex, routeIndex, route) =>
dispatch(setRoute(domainIndex, routeIndex, route))
});
export default connect(mapStateToProps, mapDispatchToProps)(Domain);
Из расширения redux chrome я вижу, что setDomain
вызывается и состояние возвращается правильно:
![enter image description here](https://i.stack.imgur.com/lVOej.png)