{ status: 'ok', userId: 1, role: 'admin', token: 'abc1023123', ... }
после определенных действий свойство type_id изменилось, как откатиться назад к начальному состоянию только свойства type_id не затрагивая другие?
...
, создайте объекты разной вложенности в песочнице, и на основе ответа от Yuxus попробуйте по изменять разные поля, не ломая остальное. return {
...state,
название_поля:{
title:action.title
}
}
return {
...state,
[action.title]:{
title:action.title
}
}
return {
...state,
dollar:{
title: "dollar" // предположим что в action.title строка "dollar"
}
}
{
type: 'BLA_BLA'
}
function qq() {
return {
type: 'BLA_BLA',
}
}
dispatch(qq())
// или
dispatch({
type: 'BLA_BLA',
})
export default (state = initialState, action) => {
switch (action.type)
{
case 'BLA_BLA':
// вот сюда придет javascript компилятор, так как вы попали в нужный кейс
// ибо выше указано - switch по типу экшена (action.type)
// ниже вы делаете что вам нужно с вашими данными
// конкретно в этом кейсе, вы берете все что было в state и изменяете loading на true
return { ...state, loading: true };
case CALLBACK_SUCCESS:
// сюда action с типом 'BLA_BLA' не попал
return { ...state, status: 'OK' };
case CALLBACK_ERROR:
// сюда тоже
return { ...state, status: 'ERROR', message: action.message };
default:
// и сюда
return state;
}
}
const mapStateToProps = state => ({ // state = все ваши редьюсеры, то есть тут лучше было бы писать store, но так уж поевелось..
campaigns: state.campaigns, // компонент подписывается только на state.campaigns (то есть только на редьюсер campaigns)
});
connect(mapStateToProps/*, mapDispatchToProps*/)(CampaignsList) // происходит коннект, mapDispatshToProps - это для "прокидывания" создателей действий (action creator)
PopupContainer
в котором отрисовываете все модальные окна. У них в isOpen (признаке показано/скрыто) - значение из редьюсера попапов. У меня редьюсер там простейший - просто имя попапа + true/false.ws.onmessage(data)
ws.onmessage = (data) => {
const myData = JSON.parse(data.data); // предположим, что там собаки или кошки
if (data.data = 'cats') { dispatch(addToCats(data.data) }
if (... )
// можете обработать каким-либо образом:
const newData = '123' + data.data
dispatch(anyActionCreator(newData)
}
function mapStateToProps(state) {
console.log(state) // и здесь смотрите, есть ли у вас в state - state.potato, если нет, значит забыли это сделать в корневом редьюсере. А если есть, то смотрите что у вас хранится в state.potato.products
return {
//potate-store
products: state.potato.products
}
}
isProductModalOpen (true / false)
. Этот код находится в "контейнере", приконекченном к redux.OPEN_PRODUCT_MODAL
+ айдишник товара (который будете запрашивать с сервера) или + всю инфу о товаре, если она у вас уже есть и вам ничего не нужно запрашивать.