case ADD_PRODUCT_TO_CART_SUCCESS: {
return state.setIn(["entities", payload.productUid], {...payload.product, count: ВАШЕ_КОЛИЧЕСТВО});
}
{ type: ADD_PRODUCT_TO_CART_SUCCESS,
payload: { productUid, product, count: ваше_количество } // сюда count можно передавать из функции с помощью которой ваш экшен был создан...
}
case SET_DISPLAY_NAME: {
return {
...state,
name: window.localStorage.getItem('name') ? window.localStorage.getItem('name') : action.payload,
}
}
const UserContainer = connect(
state => ({
default_role: state.customerProject.default_role,
show_role: state.customerProject.show_role,
roles_user: state.customerProject.roles_user
}),
dispatch => ({
anyName: () => dispatch(myActionCreator()) // и затем this.props.myNewActionCreator нужно передать в компонент-представление. Если нужно сделать доп-обработку, то передать метод из контейнера, в котором будет сначала обработка, а потом вызов this.props.myNewActionCreator
}))(AboutUser)
...
const changeRoleUser = () => {
this.props.anyName()
}
...
values.value
- ожидаете, что errors.value = 'Please enter value'
values.value === props.initialValues.value
и ождаете, что будет errors.value = 'Please enter a new value'
const validate = require('./validate');
const values = {} // то есть values.value - не существует
const props = {} // для первого теста на существование значения, нам не важно какие тут значения props
test('покажет ошибку, если нет значения', () => {
expect(validate(values, props)).toBe('Please enter value');
});
const list = List([ 'a', 'b', 'c' ])
const result = list.update(2, val => val.toUpperCase())
// List [ "a", "b", "C" ]
Как в React + Redux обмениваться данными между компонентами?
connect(mapStateToProps, mapDispatchToProps)(ComponentName)
const that = this
that.props...
const arr = [{a:1},{b:2},{c:3},{d:4}]
//допустим, вы прислали index 1 и сохранили его в переменную index, например
const newArr = [
...arr.slice(0, index), // клонируем все элементы до индекса
...arr.slice(index+1), // клонируем все элементы после индекса
// итого: индексный элемент удален
]
if(action.type === 'REMOVE_STUDENT') {
let newArr = state; // сохранили в newArr ссылку(!!!) на старый массив. Если вы хотели скопировать массив, то нужно было писать: let newARr = [...state] (если в state просто массив)
newArr.splice(action.payload, 1); // здесь вы из newArr ( и из state, так как сохранили ссылку) удалили с ИНДЕКСА один элемент. Так же, внимание, вы используете sPlice, а не slice. Разницу нужно уточнить! (подсказка ниже как)
return newArr.filter(element => element !== action.payload); // а здесь вы что вообще написали? вы сравнили element (что там? объект?) с action.payload (в которой как вы говорите индекс). Что должно быть в итоге? ;)
}
...
axios.get('/user')
.then(res => {
// успешно получили данные
dispatch({ // <-- здесь вы вызываете функцию dispatch, а если она к вам не пришла в анонимной функции, с помощью redux-thunk, то октуда вы ее возьмете?
type: GET_PROFILE_SECCUESS
payload: res.data
})
})
...