【发布时间】:2021-05-10 02:22:50
【问题描述】:
我正在练习 reactjs 看这个视频https://www.youtube.com/watch?v=5rh853GTgKo&list=PLJRGQoqpRwdfoa9591BcUS6NmMpZcvFsM&index=9
我想用uid和token验证我的信息,但是不知道怎么投递。
在这段代码中:Activate.js in container
import React, { useState } from 'react';
import { Redirect } from 'react-router-dom';
import { connect } from 'react-redux';
import { verify } from '../actions/auth';
const Activate = ({ verify, match }) => {
const [verified, setVerified] = useState(false);
const verify_account = e => {
const uid = match.params.uid; // I Think This part is Problem
const token = match.params.token;
verify(uid, token);
setVerified(true);
};
if (verified) {
return <Redirect to='/' />
}
这段代码:auth.js in actions
export const verify = (uid, token) => async dispatch => {
const config = {
headers: {
'Content-Type': 'application/json'
}
};
const body = JSON.stringify({ uid, token });
try {
await axios.post(`${process.env.REACT_APP_API_URL}/auth/users/activation/`, body, config);
dispatch ({
type: ACTIVATION_SUCCESS,
});
} catch (err) {
dispatch ({
type: ACTIVATION_FAIL
});
}
}
我想我没有渲染 uid,token 但我很困惑如何做到这一点
App.js 代码:
<Router>
<Layout>
<Switch>
<Route exact path ='/activate/:uid/:token'>
<Activate />
</Route>
</Switch>
</Layout>
</Router>
如果有任何帮助,我将不胜感激。 :)
【问题讨论】:
-
你能发布你的实际错误吗?顺便说一句,
match似乎在某种程度上是未定义的 -
@DDomen 什么是实际错误?在我的 chrome 控制台中“const uid = match.params.uid;”有一个问题““未捕获的类型错误:无法读取未定义的属性'params'””
-
堆栈跟踪?你在哪一行得到错误?另外,您在哪里调用
Activate函数?因为貌似match参数是undefined -
match应该由父Route组件注入到 props 中。您的应用程序中是否还有其他地方使用了Activate组件,它不是Route的子组件? -
您对
verify有疑问。您写道,您的Activate组件采用了一个 propverify,因此在该函数的范围内,变量verify将引用 propverify而不是您导入的函数verify。如果要引用函数,请使用相同的变量丢弃 prop。
标签: javascript reactjs react-router jwt