【问题标题】:useState, react hook with contexAPIuseState,与 contexAPI 反应钩子
【发布时间】:2020-09-24 17:39:36
【问题描述】:

我有一个非常奇怪的问题。 长话短说,即时通讯使用带有上下文 api 的反应钩子。 当我尝试使用过滤器从我的状态中删除项目时,使用状态功能不会启动

我的数据如下所示: enter image description here

我的代码看起来像这样,问题出在 deleteUser 函数上:(只添加了相关部分):

const UserContextProvider = (props) => {
const[users,setUsers] = useState([])

const addUser = (user) =>{
    setUsers([...users,user])
}

const updateUser = (obj) =>{
    deleteUser(obj.UserName)
    addUser(obj)
}

const deleteUser = (us) =>{
 //not working
 setUsers(users.filter(u=>u.UserName!=us))

 //working
let temp  = [...users]
 temp = temp.filter(el=>el.UserName!=us)
 setUsers([...temp]) 
}

【问题讨论】:

  • 两者都应该在过滤器函数返回新引用时工作。我认为你有其他代码中的问题......
  • 我知道,但第一个不起作用.....

标签: javascript reactjs react-hooks use-state


【解决方案1】:

试试这个...

const deleteUser = (us) =>{
 setUsers(previousUsers => previousUsers.filter(u => u.UserName !== us))
}

【讨论】:

  • @AlexKleymen 你在其他地方有问题。
【解决方案2】:

你的问题是你没有使用 !== 而是你写了 !=

const deleteUser = (us) =>{
 //Add an equal sign it will work
 setUsers(users.filter(u=>u.UserName!==us))

【讨论】:

  • 不,我用的是字符串所以没关系
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-27
  • 1970-01-01
  • 1970-01-01
  • 2019-10-07
  • 2020-07-17
相关资源
最近更新 更多