React-redux 操作没有被调度
Posted
技术标签:
【中文标题】React-redux 操作没有被调度【英文标题】:React-redux action is not getting dispatched 【发布时间】:2020-08-18 17:28:14 【问题描述】:我正在尝试在我的 react next js 应用程序中使用 google 实现身份验证。我将访问令牌发送到我的后端,后端检查令牌是否有效,如果有效,它会在标头中返回一个令牌以访问受保护的资源。当我集成 redux 时,redux-thunk 似乎阻止了请求,请求只发送到谷歌而不是我的后端。我没有收到来自后端的任何响应,我什至观察到服务器中的日志但没有请求。
这段代码运行良好,它返回了令牌
export const responseGoogle = (response) =>
const access_token = response.accessToken;
const tokenSend = access_token
return axios.post(`http://localhost:8000/api/auth/google/login`, tokenSend)
.then(response =>
console.log(response.data)
)
.catch(error=> console.log(error))
;
但是下面这段代码在 redux-thunk 不工作的情况下,请求也被发送到谷歌,但不在我的后端
export const responseGoogle = (response) =>
const access_token = response.accessToken;
const tokenSend = access_token
return (dispatch) =>
return axios.post(`http://localhost:8000/api/auth/google/login`, tokenSend)
.then(response =>
console.log(response.data)
)
.catch(error=> console.log(error))
;
登录按钮
<GoogleLogin
clientId=config.GOOGLE_CLIENT_ID
buttonText="Login"
onSuccess=responseGoogle
onFailure=onFailure
isSignedIn
/>
【问题讨论】:
我不知道GoogleLogin
是什么,但假设你有一个功能组件,你可以试试const dispatch = useDispatch()
和处理程序:onSuccess=response=>dispatch(responseGoogle(response))
谢谢,现在可以使用了
【参考方案1】:
它现在正在工作,感谢hmr 给我答案。 我只需要手动触发响应
<GoogleLogin
clientId=config.GOOGLE_CLIENT_ID
buttonText="Login"
onSuccess=response => dispatch(responseGoogle)
onFailure=onFailure
isSignedIn
/>
【讨论】:
以上是关于React-redux 操作没有被调度的主要内容,如果未能解决你的问题,请参考以下文章
This.props.dispatch 不是函数 - React-Redux