首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何用按钮重置/清除响应上下文

如何用按钮重置/清除响应上下文
EN

Stack Overflow用户
提问于 2021-03-24 17:28:02
回答 1查看 6.4K关注 0票数 0

即使在上下文文件中将状态设置为null时,也不能清除上下文。有人能告诉我我的密码出了什么问题吗?这是我的密码:

代码语言:javascript
运行
复制
import React, { createContext, useState } from 'react';

export const MembersContext = createContext([{}, () => {}]);

export const MembersProvider = ({ children }) => {
  const [members, setMembers] = useState(null);
  const refreshMembers = async () => {
    try {
      const data = await request('api/members');
      setMembers(data);
    } catch (error) {
      console.log('ERROR: ', error);
    }
  };

  const clearMembers = () => {
    setMembers(null);
    console.log('CLEARED MEMBERS IN CONTEXT FILE', members); // not cleared
  };

  return (
    <MembersContext.Provider
      value={{
        members,
        clearMembers,
      }}
    >
      {children}
    </MembersContext.Provider>
  );
};

然后,在我的注销页面中,我有一个按钮来使用清晰的上下文函数:

代码语言:javascript
运行
复制
import React, { useContext } from 'react';
import {
  Button,
} from 'react-native';
import { MembersContext } from '../MembersContext';

const Settings = () => {
  const { clearMembers, members } = useContext(MembersContext);
 
  const clearContext = () => {
    clearMembers();
    console.log('CLEARED MEMBERS?: ', members); // not cleared
    //logout()
  };

  return (
   <Button onPress={()=> clearContext()}>Log Out</Button>
  );
};

export default Settings;

我的控制台日志和屏幕仍然显示上一次会话的数据。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-24 19:31:29

让我们看看这两种情况:-

  • console.log('CLEARED MEMBERS?: ', members); // not cleared -在这里,您不是记录将被更新的members值,而是记录clearContext()关闭的members值,即当前状态值(在update).
  • console.log('CLEARED MEMBERS IN CONTEXT FILE', members); // not cleared之前),这不是查看members是否发生变化的正确方法。状态更新是async。在更新console.log(...)之后执行members将无法工作。我认为原因和上面一样。它不能工作,因为members.

的当前值关闭了clearMembers()函数

每次对members的更新都会产生一个新的clearMembers()/clearContext() (由于重新呈现),至少在本例中是这样的。这就是为什么这些函数总是可以访问最新的状态。

要检查members是否实际更新,可以在函数体 of Settings中记录值,或者在members依赖数组中记录members中的值。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66786246

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档