javascript - 使用调度更改数组的特定值
问题描述
我正在浏览页面上我想将 islLiked 的值从 true 更改为 false 或相反的依赖于给我用户 id 的 onClick
//this is how i set the result into state
{ ...state, browser: { ...state.browser, result: payload } };
这是我的减速机
export const profileInitState = {
photo: {
loading: true,
profile_Image: "",
cover_Image: "",
first_Image: "",
second_Image: "",
third_Image: "",
fourth_Image: ""
},
info: {
loading: true,
liked: false,
matched: false,
blocked: false,
id: "",
user_first_name: "",
user_last_name: "",
user_gender: "",
user_relationship: "",
user_birth_day: "",
user_birth_month: "",
user_gender_interest: "",
user_birth_year: "",
user_age: "",
user_tags: "",
user_city: "",
user_current_occupancy: "",
user_biography: "",
user_set_from_map: null,
user_fame_rate: 0,
user_location: {
lat: "",
lng: ""
}
},
browser: {
result: [],
sort_by: ""
}
};
export const profileReducer = (state, action) => {
const { type, payload } = action;
switch (type) {
case PHOTO_SUCCESS:
return { ...state, photo: payload };
case INFO_SUCCESS:
return { ...state, info: payload };
case PROFILE_BLOCKED:
return { ...state, info: { ...state.info, blocked: payload } };
case PROFILE_LIKED:
return { ...state, info: { ...state.info, liked: payload } };
case PROFILE_MATCHED:
return { ...state, info: { ...state.info, matched: payload } };
case BROWSER_RETURN:
return { ...state, browser: { ...state.browser, result: payload } };
case SET_NEW_ISLIK:
// i want to keep the previouse result and change only the value of islike with the value of payload but just for the chossen user with the same id it will also be on payload: {
//isLike: res.fromdb,
//valide: id
//}
case SORT_BY_BACK:
return { ...state, browser: { ...state.browser, sort_by: payload } };
default:
return state;
}
};
isLike 的新值将在有效负载上
我想知道是否有办法在用户 id 的帮助下做到这一点希望你能得到我试图解释的内容
解决方案
那应该这样做:
case SET_NEW_ISLIK:
return {
...state,
browser: {
...state.browser,
result: state.browser.result.map(user => (
user.id === payload.userId
? { ...user, isLiked: payload.isLiked }
: user )
)
}
}
推荐阅读
- android - Android 受信任的 Web 应用程序:将对象(不是字符串)从 Java 传递到 TWA
- java - Logback 不使用 logger.error(message, throwable) 记录异常
- javascript - React-konva 移动缩放和可拖动图像
- python-3.x - 出现在错误位置的 tk.Toplevel 窗口
- javascript - Vuex getter 数据在刷新时消失
- git - 复制我的工作目录以试验代码,然后从中创建一个新的存储库
- sql - 使用 UML 图解释 SQL 查询?
- lua - 有没有办法在lua中将一个表一分为二?
- spring - 没有可用的“tn.esen.dao.StudentRepository”类型的合格 bean
- javascript - 无法将获取的消息存储在变量中 - Discord js