老师,为什么获取不到user
来源:5-5 用useContext存储全局用户信息

FanYiyang
2021-07-08
js对象取属性值,打印这个对象可以看到这个属性,但是为什么取不到?
import { useState } from 'react'
import { Form, Input, Button } from 'antd'
import { LoginUser } from 'interface/user'
import { register } from 'hooks/loginRegister'
import { useAuth } from 'context/AuthContext'
// 继承登录接口的信息
interface RegisterUser extends LoginUser {
cpassword: string
}
export const Login = () => {
const { login, user } = useAuth()
console.log(
'%c 🍼️ user: ',
'font-size:20px;background-color: #EA7E5C;color:#fff;',
user
)
// 是否是组册状态,默认为登录模式
const [isRegister, setIsRegister] = useState(true)
// 点击登录的时候或者注册时候
const onFinish = (values: RegisterUser | LoginUser) => {
if (isRegister) {
login(values)
} else {
register(values as RegisterUser)
}
}
const [form] = Form.useForm()
// 点击切换的时候取消验证
const onReset = () => {
setIsRegister(!isRegister)
form.resetFields()
}
return (
<>
{console.log(
'%c 🍪 user: ',
'font-size:20px;background-color: #E41A6A;color:#fff;',
user
)} == >这里可以获取到user,对象,但是我去user.name确实undefined?
{user ? <div>用户名:{user.name}为啥子</div> : null}
<Form
form={form}
name="basic"
labelCol={{ span: 8 }}
wrapperCol={{ span: 16 }}
initialValues={{ remember: true }}
onFinish={onFinish}
>
<Form.Item
name="username"
rules={[{ required: true, message: '请输入用户名' }]}
>
<Input placeholder="用户名" />
</Form.Item>
<Form.Item
name="password"
rules={[{ required: true, message: '请输入密码' }]}
>
<Input.Password placeholder="密码" />
</Form.Item>
{!isRegister ? (
<Form.Item
name="cpassword"
dependencies={['password']}
rules={[
{ required: true, message: '请确认密码' },
({ getFieldValue }) => ({
validator(_, value) {
if (!value || getFieldValue('password') === value) {
return Promise.resolve()
}
return Promise.reject(new Error('两次密码不一致!'))
}
})
]}
>
<Input.Password id="cpassword" placeholder="再次确认密码" />
</Form.Item>
) : null}
<Form.Item>
<Button type="primary" htmlType="submit">
{isRegister ? '登录' : '注册'}
</Button>
</Form.Item>
<Form.Item>
<Button type="link" onClick={onReset}>
{isRegister ? (
<span>没有账号?注册新的账号</span>
) : (
<span>已有账号,直接登录</span>
)}
</Button>
</Form.Item>
</Form>
</>
)
}
写回答
1回答
-
Nolan
2021-07-09
也就是说 user 是有的,但是 user.name 是 undefined?首先你要把user打印出来,看看它是什么值;然后如果值不是你想要的,一层一层向上追溯,查一下哪里出了问题;可以直接去看一下接口的返回,比如是register就看register接口返回什么
012021-07-11
相似问题