【发布时间】:2016-11-08 18:13:54
【问题描述】:
我有下面的数组
var a = [{'error': 0 , 'link': 'www.abc.com'},{'error': 1 , 'link': 'www.xyz.com'},{'error': 2 , 'link': 'www.bbc.com'}]
现在我想用 lodash 在索引 1 的地方替换下面的对象
var b = {'error': 1 , 'link': 'www.change.com'}
所以输出应该低于数组
a = [{'error': 0 , 'link': 'www.abc.com'},{'error': 1 , 'link': 'www.change.com'},{'error': 2 , 'link': 'www.bbc.com'}]
但我不想通过 a[1] = b 来做。 它在减速器状态下产生问题。 我想切片 a 并在第一个索引中添加 b。
【问题讨论】:
-
不需要lodash?
a[1] = b? ... -
a[1].link = 'www.change.com'
-
@FelixKling,我认为,Kalashir 需要不变性(他使用 redux)。
-
@Yuriy:也许吧。问题中没有太多信息。
-
问题是你在你的 reducer 中改变状态而不是返回你的状态的一个新实例。
const newState = [].concat(state)然后你可以做newState[1].link = 'whatever I want'只记得在你的case语句中返回newState,这样你就可以在你的reducer中分配一个新的状态对象。
标签: javascript reactjs lodash