У меня есть компонент, который должен скрывать / отображать контент в зависимости от того, вошел ли пользователь в систему или нет.Мой регистратор Redux показывает правильное изменение состояния, но подключенный компонент не выполняет повторную визуализацию.Сначала я подумал, что это проблема с мутацией, однако после попытки выполнить то же самое с immutable.js
и redux-starter-kit
createReducer
безуспешно, я решил иначе.
Насколько я понимаю, при использовании mapStateToProps
компонент должен выполнить рендеринг так же, как если бы это было локальное состояние.
Редуктор:
export default (
state = {
hasAuth: false,
},
action
) => {
switch (action.type) {
case AUTH_LOADED:
return { ...state, hasAuth: true }
default:
return state;
}
};
Компонент:
class Screen extends PureComponent {
render() {
return (
<Fragment>
{this.props.hasAuth && <Text>Logged In</Text>}
</Fragment>
);
}
}
export default connect(state => ({
hasAuth: state.auth.hasAuth,
}))(Screen);
Корневой редуктор
import { createStore, applyMiddleware, combineReducers } from 'redux';
import { batchedSubscribe } from 'redux-batched-subscribe';
import thunk from 'redux-thunk';
import reduxMulti from 'redux-multi';
import logger from 'redux-logger';
import auth from './reducers/auth';
const rootReducer = combineReducers({
auth,
});
const createStoreWithMiddleware = applyMiddleware(thunk, reduxMulti, logger)(
createStore
);
const createStoreWithBatching = batchedSubscribe(fn => fn())(
createStoreWithMiddleware
);
export default createStoreWithBatching(rootReducer);