在我的代码中,我使用一个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是同步的吗?