【发布时间】:2021-08-06 01:47:36
【问题描述】:
所以我正在构建一个用户可以查看彼此个人资料的网站。我有一个配置文件组件,我想根据用户 ID 显示配置文件。我将这些用户 ID 作为 url 参数发送。
我的问题是,如果我从另一个用户个人资料切换到我的个人资料,我的 getProfileById 不会触发(我有一个我的个人资料按钮,可以直接将经过身份验证的用户的 id 发送到 url 参数)。我想在 url 更改时触发我的操作,我该怎么做?
这是我的getProfileById 操作代码:
export const getAllProfileById = (userId) => async dispatch => {
dispatch({ type: "CLEAR_PROFILE" });
try {
const res = await axios.get(`/api/profile/${userId}`);
dispatch({
type: "GET_PROFILE",
payload: res.data.data
})
} catch (error) {
dispatch({
type: "PROFILE_ERROR",
payload: { msg: error.response.statusText, status: error.response.status }
})
}
}
这是我在个人资料组件中调用getProfileById 的方式
useEffect(() => {
if (!profile) {
dispatch(getAllProfileById(id));
}
}, [dispatch])
【问题讨论】:
-
你试过
useLocation吗? reactrouter.com/web/api/Hooks/uselocation -
你在用
react-router-dom吗? -
你能告诉我们带url参数的组件的路由吗? (例如
<Route path="/tweet/:id" exact component={TweetDetail} />) -
我尝试将位置放入 useEffect 但不起作用
-
是的,我正在使用 react-router-dom
标签: javascript reactjs react-redux react-hooks react-router-dom