【发布时间】:2021-02-07 04:23:28
【问题描述】:
服务器正在返回用户数据。特别是,我对他的权利感兴趣。有了这些权限,我将渲染组件。我正在考虑将这些数据传递给组件并进行一些检查。所有路由都在 index.js 中
import {Notfound404} from './components/404/404NotFound'
import {UserContext} from './UserContext'
const Router = () => {
const [user, setUser] = useState(null)
return (
<React.StrictMode>
<UserContext.Provider value={{user, setUser}}>
<CookiesProvider>
<BrowserRouter>
<Switch>
<Route exact path={'/'} component={Auth}/>
<Route exact path={'/settings'} component={Settings}/>
<Route exact path={'/event-logs'} component={EventLog}/>
<Route component={Notfound404} status={404}/>
</Switch>
</BrowserRouter>
</CookiesProvider>
</UserContext.Provider>
</React.StrictMode>
)
}
在 Auth.js 中设置用户数据
import {UserContext} from '../../UserContext'
export const Auth = () => {
const {user, setUser} = useContext(UserContext)
const [username, setUsername] = useState('')
const [password, setPassword] = useState('')
const [token, setToken] = useCookies(['qr-token'])
useEffect(() => {
if (token['qr-token']) window.location.href = '/settings'
}, [token])
const credentials = {
username: username,
password: password
}
const sendCredentials = () => {
axios.post(`http://127.0.0.1:8000/api/v1/auth/`, credentials, {
headers: {
'Content-type': 'application/json',
}
})
.then(resp => {
setToken('qr-token', resp.data.token);
setUser(resp.data)
})
.catch(error => console.log(error.response))
}
return !token['qr-token'] &&
<div className={styles.authContainer}>
<label htmlFor={'username'}>Username</label>
<input id={'username'} type={'text'} placeholder={'username'}
onChange={evt => setUsername(evt.target.value)}
/>
<label htmlFor={'password'}>Password</label>
<input id={'password'} type={'password'} onChange={evt =>
setPassword(evt.target.value)}/>
<button onClick={sendCredentials}>Sign In</button>
</div>
)
}
在 index.js 中,我在授权后获取用户数据。但在 settings.js 中使用数据为空
export const Settings = () => {
const {user, setUser} = useContext(UserContext)
console.log(user) # null
....
}
可能我做错了什么,我正在寻求您的帮助。谢谢。
【问题讨论】:
-
能否提供
UserContext文件的内容? -
没什么特别的) import {createContext} from 'react' export const UserContext = createContext(null)
标签: reactjs react-context