我当前将userInfo存储在一个状态中,
const [users, setUsers] = useState([])
请问,我如何将userId传递到axios的URL中,以便能够获取特定用户的帖子。请看下面我所做的。我知道我搞错了,但请帮助我。
** Jmeter 板组件**
const Dashboard = () => {
const getPost = () => {
axios.get(`/api/getpost/${users._id}`, //I want to fetch the userID on this URL. That measns it is to replace ${users._id}
{
withCredentials: 'true',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
}
})
.then((response) => {
setUposts(response.data)
})
}
useEffect(() => {
getPost()
}, [])
return (
//something here
)
}
用户模式这是我的用户模式
const userSchema = new Schema({
username: {
type: String,
required: true
},
roles: {
User: {
type: Number,
default: 2001
},
Mentor: Number,
Admin: Number
},
password: {
type: String,
required: true
},
userID: {
type: String,
required: true
},
Profile: {
type: mongoose.Schema.Types.ObjectId,
ref: "profile",
},
refreshToken: String
});
const User = mongoose.model('user', userSchema);
module.exports = User;
API TO GET USER POST这是我根据用户ID从数据库中查找用户并填充的方法
router.get('/getpost/:id/', (req, res) => {
const id = req.params.id;
// const profID = req.params.prof_id;
Userpost.find({User:id}).populate('User', {password: 0}).populate('Profile').exec((err,docs) => {
if(err) throw(err);
res.json(docs);
})
});
如何设置用户下面的代码显示了我如何设置用户的状态。
const getUser = () => {
axios.get('/api/users', {
withCredentials: 'true',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
}
})
.then((response) => {
setUsers(response.data)
})
};
useEffect(() => {
getUser()
}, [])
3条答案
按热度按时间tf7tbtn21#
假设您首先调用getUser()api,并在useEffect中调用getPost()api之前设置用户的详细信息。您可以将userId作为参数传递给getPost()函数。在useEffect中,当您调用getPost()时,您将拥有您的用户数据,由于您将其存储在数组中,因此需要以数组形式访问它,如下所示:
个用户[0]。用户ID。
因此,您可以通过以下方式实现代码:
czfnxgou2#
将其替换为:
得到(
/api/getpost/${users[0]._id}
,wgx48brx3#
问题是你在哪里setUsers我们需要知道里面有什么。特别是setUsers在哪里被调用。一个状态总是需要时间来设置。它不是仅仅因为你调用它就被设置的。如果它改变了,你应该用一个let来尝试,如果你马上需要它
只需使用变量user(如上所述)代替userState。
useState() undefined in React just after set
有一个很长很正确的解释