【发布时间】:2022-11-19 00:29:35
【问题描述】:
function UserCard({ user }) {
let defaultUserName = user.nicknames[0];
let [selectedNickname, setSelectedNickname] = React.useState(defaultUserName);
// The selected nickname becomes invalid when the user is changed!!!
const selectedNicknameIsValid = user.nicknames.includes(selectedNickname);
return (<div>
<UserCardWithNickName user={user} selectedNickname={selectedNickname} />
<SelectNickName user={user} setSelectedNickname={setSelectedNickname} />
</div>);
在上面的 sn-p 中,组件的状态保存了从用户昵称列表中选择的昵称。但是当用户在父组件中更改时,该组件将以相同的状态重新呈现。因此,该州的昵称是给错误用户的。
处理这个问题的首选方法是什么?很多谷歌搜索都找不到太多讨论。
我是以某种基本的非反应方式这样做的吗?
当状态变为无效时使用 useEffect 来修复状态的首选解决方案是否如此处所述React.useState does not reload state from props?
codesandbox 上的工作示例
【问题讨论】:
-
如果您将用户添加到其依赖项数组,useEffect 将为新用户重新呈现您的组件。否则你的组件不知道,它的状态应该被更新。
标签: reactjs