反应状态更新仅更新一个元素

阿瓦格塔莫

不知道是什么原因导致了这个问题,当我使用useState更改状态时,其调用的元素会更新,而另一个不会(如下所示)。当我刷新页面时,显示正确的页面

<>
{
                        user.rank != "user" && user.username != username && userInfo.rank == "user" ? <div className="profile-btn" onClick={async () => {
                            let res = await PromoteToMod(username)
                            if(res.status == 'success')
                                setUserInfo(state => state.rank = 'mod')
                        }}>
                            <p>PROMOTE TO MOD</p>
                        </div>: <></>
                    }
                    {
                        user.rank != "user" && user.username != username && userInfo.rank == "mod" ? <div className="profile-btn" onClick={async () => {
                            let res = await DemoteToUser(username)
                            if(res.status == 'success')
                                setUserInfo(state => state.rank = 'user')
                        }}>
                            <p>DEMOTE TO USER</p>
                        </div>: < > < />
} 
</>

这是react钩子的return()。该挂钩仅包含一种状态[userInfo,setUserInfo]。从服务器检索到userInfo,这就是刷新后显示正确部分的原因。但是我想在从服务器收到响应后更新两个按钮(PROMOTE / DEMOTE),因此调用了setUserInfo。

英国

试试下面的方法,

{
     user.rank != "user" && user.username != username && userInfo.rank == "user" ? 
        <div className="profile-btn" onClick={async () => {
               let res = await PromoteToMod(username)
                  if(res.status == 'success')
                      setUserInfo(state => ({...state, rank:'mod'}));
                        }}>
               <p>PROMOTE TO MOD</p>
           </div>: <></>

}

类似地 rank: 'user'

  setUserInfo(state => ({...state, rank:'user'}));

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

React:如何仅更新一个元素的状态,而不是批量更新

反应:在Reducer中更新我的状态的一个值

错误:元素类型无效:在尝试更新状态时,在反应中需要一个字符串

反应钩:组分重新呈现一个步骤后面上的状态更新

如何从另一个文件更新反应组件的状态?

如何在一个SubmitHandler中两次更新反应状态

C-链接列表-插入元素未更新-仅添加最后一个输入元素

反应:componentDidUpdate - 当我更新数组中的对象时,前一个状态与当前状态相同

仅更新一个状态变量时,所有组件都会重新渲染

如何在Redux状态的嵌套数组中仅更新一个值?

如何更新列表的一个元素

更新列表的最后一个元素

更新 State React 的一个元素

更新数组的最后一个元素?

将新元素添加到阵列或更新现有的一个(阵营状态)

使用地图功能时如何更新一个特定元素的状态

Promise.all 中的 setState 钩子只更新组件状态的最后一个元素

如何在使用map函数遍历数组时更新一个特定元素的状态

只有第一个元素显示状态更新,直到外部事件

在触发onChange时仅更新列表的第一个元素

反应更新列表不是一个函数

流星反应式无功变量根据另一个选择元素中的选择更新一个选择元素

反应状态挂钩数组元素不更新状态

仅反应一次更新值

更新状态由另一个reducer管理

从另一个组件更新组件的状态

Vuejs 更新另一个函数内部的状态

Redux在另一个reducer中的更新状态

如何使用一个函数更新 React 状态?