Javascript 数组项上的映射不';不要渲染所有元素
更新对象中的答案后,它将变得未定义。所以它不适合我的应用程序的其他部分, 我在乞讨中得到的:Javascript 数组项上的映射不';不要渲染所有元素,javascript,reactjs,redux,react-redux,Javascript,Reactjs,Redux,React Redux,更新对象中的答案后,它将变得未定义。所以它不适合我的应用程序的其他部分, 我在乞讨中得到的: 0 : {answers: Array(5), category: {…}, description: null, legacyName: null, name: null, …} 1 : {answers: Array(3), category: {…}, description: null, legacyName: null, name: null, …} 2 : {answers: Array(3
0
:
{answers: Array(5), category: {…}, description: null, legacyName: null, name: null, …}
1
:
{answers: Array(3), category: {…}, description: null, legacyName: null, name: null, …}
2
:
{answers: Array(3), category: {…}, description: null, legacyName: null, name: null, …}
3
:
{answers: Array(3), category: {…}, description: null, legacyName: null, name: null, …}
4
:
{answers: Array(2), category: {…}, description: null, legacyName: null, name: null, …}
更改后我拥有的:
0
:
undefined
1
:
undefined
2
:
undefined
3
:
undefined
4
:
undefined
减速器:
function updateObject(oldObject, newValues) {
return Object.assign({}, oldObject, newValues);
}
function updateItemInArray(array, questionId,answerId, newValue) {
return {
project: array.map(item => {
if(item.id !== questionId) {
return item;
} else {
item.answers.map(answer => {
if(answer.id !== answerId) {
return answer;
} else {
updateObject(answer, { value : newValue})
}
});
}
})
}
}
export function project(state = [], action){
switch(action.type){
case 'PROJECT_FETCH_SUCCESS':
return action.project; //initialize the project from a fetch
case 'ANSWER_UPDATE_SUCCESS':
{
return updateItemInArray(state, action.questionId, action.answerId, action.newValue); //Want to change a value in one object in the array of arrays
}
default:
return state
}
}
我要做的是在数组中找到数组,然后在该数组中找到对象以更改其值。但由于某些原因,它返回未定义的。我在redux文档中看到了我正在使用的函数:
您不能从map函数内的else条件返回
function updateItemInArray(array, questionId,answerId, newValue) {
return {
project: array.map(item => {
if(item.id !== questionId) {
return item;
} else {
// need a return statement here
return item.answers.map(answer => {
if(answer.id !== answerId) {
return answer;
} else {
updateObject(answer, { value : newValue})
}
});
}
})
}
}
return updateObject(答案,{value:newValue})
谢谢你,这是我问题的答案,但我也需要把它与评论结合起来,@thereasondidthis耗费了我5个小时的生命,我所有的控制台日志都给出了正确的信息,但是concat没有从我的比较结果中得到任何回报。谢谢你@Shubham