如何解决反应上下文杀死本地状态
我在我的应用程序中使用上下文。
在根目录下,我定义了上下文:
const AppWithContext = () => {
const [user,setUser] = useState()
const [token,setToken] = useState()
const [activeProfilesMap,setActiveProfilesMap] = useState<any>({})
return (
<AppContext.Provider
value={{
activeProfilesMap: activeProfilesMap,setActiveProfilesMap: (m: any) => setActiveProfilesMap(m as any),user: user,setUser: (newUser: string) => {
setUser(newUser as any)
},token: token,setToken: (token: string) => {
setToken(token as any)
},}}
>
<App />
</AppContext.Provider>
)
}
function App() {
return (
<Router>
<Header />
<Switch>
<Route path='/login' component={LoginPage} />
<Route path="/" component={() => <PageWrapper component={HomePage} title='Home' />} />
</Switch>
</Router>
);
}
在外部文件中定义了AppContext的地方:
import React from 'react'
const AppContext = React.createContext<any>({
user: null,// eslint-disable-next-line no-unused-vars
setUser: (user: any) => { },token: null,// eslint-disable-next-line no-unused-vars
setToken: (token: any) => { },activeProfilesMap: null,setActiveProfilesMap: (map: any) => { },})
export default AppContext
在<App />
中,还有一个具有本地状态的组件:
import { Button,Divider } from 'antd';
import TextArea from 'antd/lib/input/TextArea';
import React,{ useState } from 'react';
const Create = () => {
const [text,setText] = useState('')
return (
<div>
<TextArea
rows={4}
value={text}
onChange={(e: React.ChangeEvent<HTMLTextAreaElement>) => setText(e.target.value)}
/>
<Divider />
<pre>
{text}
</pre>
<Divider />
<Button type='primary'>
Send
</Button>
</div>
)
}
export default Create
一旦上下文在某些组件中发生更改:
const { activeProfilesMap,setActiveProfilesMap } = useContext(AppContext);
...
setActiveProfilesMap({})
Create
组件中的本地状态丢失(默认清除),我不明白为什么。我的代码有什么问题?正常的情境行为吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。