У меня есть простое действие редуктора и редуктор, который изменяет состояние без каких-либо запросов веб-службы:
// Action
export const setMyState = (value) => {
return {
type: 'SET_STATE',
payload: value
};
};
// Reducer
export default (state = INITIAL_STATE, action) => {
switch (action.type) {
case 'SET_STATE':
return { myState: action.payload }
}
}
Когда я устанавливаю состояние через действие в моем компоненте реагирования и немедленно вызываю это состояние изПривязка к редуксу реквизита, я не получаю текущее состояние:
import React from 'react';
import { connect } from 'react-redux';
import { setMyState } from '../actions';
class MyScreen extends React.Component {
componentWillMount() {
this.props.setMyState('value');
console.log(this.props.myState);
}
}
const mapStateToProps = state => {
const { myState } = state;
return myState;
};
export default connect(mapStateToProps, { setMyState })(MyScreen);
Я понимаю, что рендеринг будет вызываться снова, когда меняются состояние редукса и связанные реквизиты, но я пытаюсь сделать это, чтобы отключитьдругое действие Redux на основе полученного состояния.Мои параметры выглядят следующим образом:
Выясните, как обновлять состояние Redux в React сразу после изменения состояния
Запустить избыточное действие ввместо этого редуктор, который звучит как анти-паттерн .
Установить какое-либо состояние в моем компоненте или уменьшить, чтобы действие запускалось при следующем рендере, что выглядит неуклюже.