问题调用' useContext '然后我的其他' state '设置为默认值



在我的代码中,我使用一个context用于保存数据,一个state用于获取活动id。我的问题是当我setState,然后setContext,当我得到state的值,我看到state设置默认值!


export default function AddKnowledgeScreen({ route, navigation }) {
const { TmpKnowledge, SetTmpKnowledge } = useContext(addKnowledgeContext);
const [activeKnowlegeId, SetactiveKnowlegeId] = useState(-1);
const myref = useRef(null);
return(
<View style={{ flex: 1, alignItems: 'center', backgroundColor: Color.Background, }}>
<Button
onPress={() => {
SetactiveKnowlegeId(5);
var knowledgeData = { Id: 5, Name: "jack" };
SetTmpKnowledge(knowledgeData);
}>
</Button>
</View>
);
}

我发现,当我设置我的context屏幕重新渲染和所有state设置默认值!

不确定我是否得到了你的问题正确,但我知道你正试图设置你的本地状态,并立即使用这个新值来设置你的值在你的上下文中

如果是,这可能是因为useState钩子是异步的,因此在设置上下文值时仍然得到默认值

这里有一些链接,有更详细的解释:

为什么setState在reactjs Async而不是Sync?

useState是同步的吗?

相关内容

  • 没有找到相关文章