Я пытаюсь воспроизвести что-то похожее на пример TodoList в основном примере документов а>. Второй редьюсер получает массив — styleItems = [{... ... }, {... ...}]
— и затем вызывает первую функцию, чтобы воздействовать на каждый из отдельных объектов.
Я предоставляю initialState
контейнеру приложения с помощью следующего, как показано в containers/app.js
. Однако состояние, передаваемое редюсеру styleItems
, кажется пустым массивом — каждый раз.
Однако react отображает пользовательский интерфейс на основе исходной конфигурации, а react dev-tools показывает структуру состояния, как и ожидалось. Магазин избыточности каким-то образом видит то же самое, что и реакция?
контейнеры/app.js
function starterInfo(state) {
return {
// The ID of this particular object
id: 12345,
// Various keys and theri css values
styleItems: [
{
pk: 31,
order: 1,
label: 'Caption text color',
css_identifier: '.caption-text',
css_attribute: 'color',
css_value: '#FFFFFF'
},
{
pk:23,
order: 2,
label: 'Caption link color',
css_identifier: '.caption-link',
css_attribute: 'color',
css_value: '#FEFEFE'
}
],
// Network state info
currently_fetching: false,
currently_posting: false
}
}
export default connect(starterInfo)(App)
редьюсеры/index.js
// This handles a single styleItem object within the array
function change_css(state = {}, action){
switch (action.type){
case actions.CHANGE_CSS:
if (state.order !== action.order){
return state
}
return {
...state,
css_value
}
default:
return state
}
}
// This handles the styles array in the global state
function styleItems(state = [], action){
switch(action.type){
case actions.CHANGE_CSS:
const foobar = state.map(styleItem =>
change_css(styleItem, action)
)
return foobar
default:
return state
}
}