У меня есть приложение с несколькими вкладками, когда я нажимаю вкладку в первый раз, все хорошо рендерится из магазина приставок. Но когда я переключаю вкладки и возвращаюсь к первой вкладке, компоненты перестают обновляться. Данные там, когда я консоль войти. Интересно, что флажки определенно не обновляются, но TextField обновляется, за исключением того, что они выглядят странно, даже если в них есть данные; метка TextField покрывает значение. Вот пример с флажком (я показываю только часть кода, в противном случае вы можете убежать из этого поста, так как он будет слишком длинным), но в основном есть выпадающее меню с кучей данных, полученных из топора ios получить вызов и в зависимости от того, какой из них выбран, флажок устанавливается в значение true или false. Но после того, как вы покинете вкладку и вернетесь к ней, а затем снова выберете ее из выпадающего меню, флажок не сработает, если я не нажму на него. То же самое касается TextFields, если я наберу, то они "проснуться".
Компонент:
import React from 'react';
import { connect } from 'react-redux';
import * as ExampleAction from '../../../../../actions/exampleAction';
import TextField from '@material-ui/core/TextField';
class ReactReduxExample extends React.Component {
constructor(props) {
super(props);
}
handleCheckBoxChange = e => {
this.props[e.target.name](e.target.checked);
}
render() {
const {
handleCheckBoxChange,
} = this;
return (
<div>
<TextField
select
name="var1Change"
onChange={handleCheckBoxChange}
value={this.props.exampleReducer.var1}
/>
</div>
)
}
}
const mapStateToProps = (state, ownProps) => {
return {
exampleReducer: state.exampleReducer
}
};
const mapDispatchToProps = (dispatch) => {
return {
var1Change: var1 => dispatch(ExampleAction.var1Change(var1)),
}
};
export default connect(mapStateToProps, mapDispatchToProps)(ReactReduxExample );
Редуктор:
const var1ChangeType = VAR_1_CHANGE';
const initialState = {
var1: false,
};
export const actionCreators = {
var1Change: () => ({ type: var1ChangeType }),
};
export default (state, action) => {
state = state || initialState;
if (action.type ===var1ChangeType) {
return { ...state, var1: action.var1 };
}
return state;
};