Я довольно новый для immutable.js. Я хочу обновить home.filmList[0].isDetailModalShow = false.
Как мне это сделать? Пожалуйста, помогите мне! Мое состояние, как это:
{
home: {
filmList: [
{
id: 1,
name: '111',
imgUrl: '111',
isDetailModalShow: false
},
{
id: 2,
name: '222',
imgUrl: '',
isDetailModalShow: false
},
]
}
}
И мой редуктор, как это
import { createReducer } from 'redux-act'
import { fromJS } from 'immutable'
import { setFilmList, toggleDetailModal } from './actions'
const initialState = fromJS({
filmList: [],
})
export default createReducer({
[toggleDetailModal]: (state, payload) => {
const index = state.get('filmList').findIndex(item => item.id === payload)
// state.get(filmList) is filmList: [........]
// below line code do not work!
return state.updateIn(['filmList', index, 'isDetailModalShow'], value => !value)
},
}, initialState)
-1
catwen
28 Фев 2017 в 20:06
2 ответа
Лучший ответ
Я нахожу решение ...
Когда я установил filmList
Я забыл использовать от JS
// old
[setFilmList]: (state, payload) => {
return state.set('filmList', payload)
}
// new, it works!
[setFilmList]: (state, payload) => {
return state.set('filmList', fromJS(payload))
}
0
catwen
1 Мар 2017 в 03:32
Вы можете использовать функцию setIn
Immutable:
state.setIn(['filmList', 0, 'isDetailModalShow'], false)
1
Thibaut Remy
28 Фев 2017 в 17:25
Похожие вопросы
Новые вопросы
reactjs
React — это библиотека JavaScript для создания пользовательских интерфейсов. Он использует декларативную парадигму на основе компонентов и стремится быть эффективным и гибким.