【发布时间】:2021-07-29 16:39:46
【问题描述】:
我刚开始学习 Reactjs,我正在寻找一些关于如何改进以下代码结构的提示和技巧(目前我只使用示例数据作为不同状态的值):
import { useState, createContext } from "react"
export const UserContext = createContext()
export const UserProvider = ({ children }) => {
const [uuid, setUuid] = useState("5498cdec-2bfb-455c-adc6-d59825adde71")
const [email, setEmail] = useState("myEmail@email.com")
const [username, setUsername] = useState("asdf1414")
const [rank, setRank] = useState("ADMIN")
const [profilePic, setProfilePic] = useState({ mime: "image/png", data: "" })
const [joined, setJoined] = useState(Date.now())
const [lastJoined, setLastJoined] = useState(Date.now())
const value = {
uuid: uuid,
setUuid: setUuid,
email: email,
setEmail: setEmail,
username: username,
setUsername: setUsername,
rank: rank,
setRank: setRank,
profilePic: profilePic,
setProfilePic: setProfilePic,
joined: joined,
setJoined: setJoined,
lastJoined: lastJoined,
setLastJoined: setLastJoined
}
return (
<UserContext.Provider value={value}>
{children}
</UserContext.Provider>
)
}
我在这种情况下的目标如下:
成功登录后,从数据库中获取所有数据并放入此上下文中。显然,我想使用和更新来自整个 webapp 的数据 - 因此我为 Context 提供了变量 value。
我目前的“眼中钉”是,value 变量非常拥挤,我必须手动输入所有数据和更新函数。有没有办法可以简化 value 变量?有没有关于如何做我想要实现的最佳实践?
提前致谢!
亲切的问候,安德烈亚斯
【问题讨论】:
-
您可以将整个用户信息保存在一个状态变量中,该变量是包含所有这些属性的对象。您还可以使用
useReducer钩子,它可以让您管理更复杂的状态,或者您可以使用其中一种用于状态管理的无数工具,例如 Redux、Mobx 等。 -
感谢您为我“开球”,以不同的方式思考我的问题!我想出了一个办法让它更干净一些。
标签: reactjs react-context