const that = this
that.props...
variable = this.state.color // например 's4'
...
<div className={'s1 s2 s3 ' + variable}> // не забывайте пробел после s3
...
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 (в которой как вы говорите индекс). Что должно быть в итоге? ;)
}
new webpack.DefinePlugin({
'ENV_API_ROOT_V1': JSON.stringify(process.env.ENV_API_ROOT_V1),
'HTTP_PROTOCOL': JSON.stringify(process.env.HTTP_PROTOCOL),
'WS_PROTOCOL': JSON.stringify(process.env.WS_PROTOCOL),
}),
cross-env ENV_API_ROOT_V1=my_url_for_Api.com HTTP_PROTOCOL=https WS_PROTOCOL=wss webpack --progress --config ./webpack.prod.config.js
...
axios.get('/user')
.then(res => {
// успешно получили данные
dispatch({ // <-- здесь вы вызываете функцию dispatch, а если она к вам не пришла в анонимной функции, с помощью redux-thunk, то октуда вы ее возьмете?
type: GET_PROFILE_SECCUESS
payload: res.data
})
})
...
React.PropTypes...
PropTypes...
import React, { Component } from 'react'
import { PropTypes } from 'prop-types' // можно и import PropTypes from 'prop-types'
...
ComputersList.propTypes = {
data: PropTypes.shape({
rows: PropTypes.array.isRequired,
isFetching: PropTypes.bool.isRequired,
}).isRequired,
onlineSessions: PropTypes.array.isRequired,
onChangeSort: PropTypes.func.isRequired,
}
Это как-то неудобно, у меня есть идея чтобы вынести List Item (stuff/:id/comp_7/:item_id) и Subitem (stuff/:id/comp_2/:item_id/sublist/:subitem_id) в отдельные контейнеры.
it(`handle action ${patientActions.ON_CHANGE_PATIENT}`, ()=>{
expect(reducer(undefined, {
type: patientActions.PATIENT_INIT_STATE, // тут должно быть patientActions.ON_CHANGE_PATIENT
payload: {
value: '11122',
field: 'patient_ur'
}
})).toEqual({...defaultStates, patient_ur: '11122'})
})