我在當前項目中使用React和Redux。更新數組中的1個元素是否觸發了React中數組中其他元素的渲染?
我有像這樣的狀態下對象:
state: {
reducerOne: {
keyOne: valueOne,
keyTwo: valueTwo
}
reducerTwo: {
keyThree: valueThree
keyFour: valueFour
}
}
假設valueFour
是對象的數組。我用valueFour
陣列map
一束反應的元素的,像這樣在渲染方法:
this.props.valueFour.map(()=> <div/>)
(顯然上述被簡化,但所有我試圖以指示是,我呈現一串要素)
現在,我想只更新上述元素中的一個。在我的動作/減速的代碼,我返回整個valueFour陣列與1元的功能更新,像這樣:
動作代碼
export function updateThingInArray(elementId){
return (dispatch, getState) => {
const myArray = getState().reducerTwo.keyFour
for (let i=0; i < myArray.length; i++) {
if (myArray[i].id === elementId){
const result= [
...myArray.slice(0,i),
Object.assign({},
myArray[i],
{field:newValue}),
...myArray.slice(i+1)
]
dispatch(update(result))
}
}
}
}
減速代碼:
export default handleActions({
[UPDATE]: (state,{payload}) => Object.assign({},state, {keyFour: payload})
},{
keyThree:{},
keyFour:{}
})
(我減速碼使用庫redux-actions)
我希望所有這些都有道理。如果它不請,我會澄清。
但我的問題是,因爲keyFour有技術更新的整個數組,這是否意味着所有我的元素將更新,即使只有1有新的數據?如果是這樣,是否有更有效的方式來實現我目前正在做的事情?