после определенных действий свойство type_id изменилось, как откатиться назад к начальному состоянию только свойства type_id не затрагивая другие?
...
, создайте объекты разной вложенности в песочнице, и на основе ответа от Yuxus попробуйте по изменять разные поля, не ломая остальное. Если есть другой способ по нажатию кнопки рендерить другую страницу, то буду крайне рад услышать.
...
state = {
myData: []
}
...
this.setState({ myData: [[1,2,3],[4,5,6],[7,8,9]] })
{
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;
}
}
onDeleteClick
(который является методом вашего класса)state = {
users: [/*.. массив с юзерами*/]
}
...
onDeleteClick = (e) => {
const id = e.currentTarget.dataset.myId
const новый_массив = массив_без_удаленного_элемента (подсказка, удалять можно через фильтрацию по айди)
this.setState({ users: новый_массив })
}
...
let user = this.props.users.map(function(user){
return <li key={user.id}><User number={user.id} id={user.id} text={user.id} onDeleteClick={this.onDeleteClick}/></li>
})
...
// где-то там в компоненте User (что там внутри не знаю, но предположим есть кнопка удаления как вы пишите)
...
render() {
<div>
// что-то по верстке про юзера
<button onClick={this.props.onDeleteClick} data-my-index={this.props.user.id}> Удалить</button>
</div>
}
<img src="//images/my_image.jpg">
const mapStateToProps = state => ({ // state = все ваши редьюсеры, то есть тут лучше было бы писать store, но так уж поевелось..
campaigns: state.campaigns, // компонент подписывается только на state.campaigns (то есть только на редьюсер campaigns)
});
connect(mapStateToProps/*, mapDispatchToProps*/)(CampaignsList) // происходит коннект, mapDispatshToProps - это для "прокидывания" создателей действий (action creator)