【发布时间】:2018-04-21 07:27:33
【问题描述】:
来自在线课程的示例代码:
import * as PlayerActionTypes from '../actiontypes/player';
const initialState = [
{
name: 'Jim Hoskins',
score: 31,
},
{
name: 'Andrew Chalkley',
score: 20,
},
{
name: 'Alena Holligan',
score: 50,
},
];
export default function Player(state=initialState, action) {
switch(action.type) {
case 'PlayerActionTypes.ADD_PLAYER':
return [
...state,
{
name: action.name,
score: 0,
}
];
case PlayerActionTypes.REMOVE_PLAYER:
return [
...state.slice(0, action.index),
...state.slice(action.index+1),
]
}
}
由于初始状态是不可变的(始终相同),因此状态是相同的。所以,假设我先添加一个新玩家,现在总共有四个玩家。如果那时我想删除第四个玩家(数组中的索引为 3),但它是如何工作的?
case PlayerActionTypes.REMOVE_PLAYER:
return [
...state.slice(0, action.index),
...state.slice(action.index+1),
]
“状态”中没有 index = 3(只有三个玩家)。
我不明白。请为我的困惑提供一些帮助。提前致谢。
【问题讨论】:
-
为什么说状态中没有index=3? (假设您在删除之前添加了一个)
-
@deezg 因为从'state=initialState'(函数中的第一个参数),因为'initialState'总是一样的(最初只定义了三个玩家),'state'如何变化>这是我的困惑。我不明白这部分。
-
好的,现在我知道混乱来自哪里了。检查我的回答是否有助于理解它。