【发布时间】:2020-11-28 06:24:44
【问题描述】:
我正在尝试使用要在输入字段中呈现的先前信息来更新用户页面。 Console.log 返回正确的值,但它没有显示为 useState 内的初始值。
获取以前的用户简介
function EditProfile(props) {
const user = useSelector(state => state.user);
const [profile, setProfile] = useState([])
const userId = props.match.params.userId
const userVariable = {
userId: userId
}
useEffect(() => {
axios.post('/api/users/getProfile', userVariable)
.then(response => {
if (response.data.success) {
console.log(response.data)
setProfile(response.data.user)
} else {
alert('Failed to get user info')
}
})
}, [])
console.log(profile.bio);
这是我目前用来显示输入字段的内容。 (为简洁而编辑)
const [bio, setBio] = useState("");
const handleChangeBio = (event) => {
console.log(event.currentTarget.value);
setBio(event.currentTarget.value);
}
return (
<label>Bio</label>
<TextArea
id="bio"
onChange={handleChangeBio}
value={bio}
/>
)
之前尝试过这样做,但对象没有显示为 useState 初始值
const [bio, setBio] = useState(User.bio);
后端 - 我知道 $set 会覆盖所有信息,因此试图在输入字段内呈现以前的信息,这样它就不会被空白值覆盖。
router.post('/edit', auth, (req, res)=> {
console.log(req.body.education)
User.updateMany(
{ _id: req.user._id },
[ {$set: { bio: req.body.bio}},
{$set: { industry: req.body.industry}},
{$set: { jobTitle: req.body.jobTitle}},
],
(err)=>{
if (err) return res.json({success: false, err});
return res.status(200).send({
success: true
});
});
});
【问题讨论】:
标签: reactjs express react-hooks state mern