reactjs - 如何在反应中隔离对象状态的对象属性?
问题描述
我有一个对象,里面有一个对象,并且我的组件中有一个数组作为状态。
const [courseAndUserIDs, setCourseAndUserIDs] = useState(null);
useEffect(() => {
fetch(`http://localhost:8080/courses/${id}`)
.then(resp => resp.json())
.then(data => setCourseAndUserIDs(data))
.catch(err => setIsErr(true));
}, [])
此状态在组件安装后设置。此状态如下所示:
State
:
{course: {…}, userIDs: Array(4)}
course
:
{averageRating: 3, categories: Array(3), comments: …}
userIDs
:
[2, 5, 1, 6]
现在每次我想从一个course
对象中获取一个属性时,我都必须输入这个:courseAndUserIDs.course.property
我想缩短这个条目。我怎样才能做到这一点 ?
请记住,使用 useEffect 创建的效果在渲染提交阶段之后运行,因此在渲染周期之后运行。
解决方案
一种方法是定义一个中间变量const courses = courseAndUserIDs.course
。
您还可以找到比 更短的名称courseAndUserIds
。变量名中的“和”这个词对我来说似乎是一种代码味道。
或者,您可以分离状态:
const courses, setCourses = useState();
const users, setUsers = useState();
推荐阅读
- php - 在 Laravel 5 和 AJAX 上传块
- java - 使用 ArrayList 对我的数组进行更改,然后将其转换回数组,数组不会更改
- python - 当我改变一个对象的值时,我想改变另一个对象的值
- python - Pandas - 多条件查找速度
- c++ - 如果 sizeof(struct ...) 不等于给定数字,如何获得 C 编译器#error?
- c# - 如何从 SslCredentials 和令牌字符串创建 CallCredentials
- r - 线性回归 - 为自变量的每个类别插入 NA
- reactjs - 如何为在 redux 中触发的动作设置拦截器
- java - 获取 java.lang.NoClassDefFoundError: 无法初始化类 oracle.jdbc.OracleDriver 异常
- node.js - { "code": "ECONNECTION", "command": "CONN" } 在 nodemailer