reactjs - Redux 调度 index.html 的内容
问题描述
在测试动态创建的链接时我的 React 应用程序发生了爆炸,现在 redux 正在返回 index.html 的内容。我以前见过一次,但忘记了我是如何解决的。目前的设置已经工作了几个月,所以我不想疯狂地改变一切。我通过在调度之前检查“<!doctype html>”来解决用户登录的 html 问题,但是随后的调度会成功然后立即失败并且还包含 index.html 的内容。我创建了一个新用户,同样的事情发生了。我检查了数据库,清除了浏览器数据,检查了 DevTools 中的应用程序存储,并重置了我的计算机。真正奇怪的部分是我在测试服务器上的版本正在做同样的事情,它不会在另一台设备上加载。这是我在 React Developer Tools 中看到的状态示例:
token:null
isAuthenticated:true
loading:false
user:"<!doctype html><html lang="en"><head><meta charset="utf-8"/> .."
如果不是我的电脑,那么比较这两个版本怎么会破坏它们呢?
编辑
加载用户操作
export const loadUser = () => async dispatch => {
if (localStorage.token) {
setAuthToken(localStorage.token);
}
try {
const res = await axios.get(`${API_PREFIX}/auth`);
dispatch({
type: USER_LOADED,
payload: res.data
});
} catch (error) {
dispatch({
type: AUTH_ERROR,
payload: error.message
});
}}
后端
router.get('/', auth, async (req, res) => {
try {
const user = await User.findById(req.user.id).select('-password');
res.json(user);
} catch (err) {
console.error(err.message);
res.send(500).json({msg: 'User error'});
}
});
减速器
const initialState = {
token: localStorage.getItem('token'),
isAuthenticated: null,
loading: true,
user: null,
online: null,
}
export default function(state = initialState, action) {
const { type, payload } = action;
switch(type){
case USER_LOADED:
return {
...state,
isAuthenticated: true,
loading: false,
user: payload
}
case REGISTER_SUCCESS:
case LOGIN_SUCCESS:
console.log(`\n\n\nLOGIN PAYLOAD: ${JSON.stringify(payload)}`)
localStorage.setItem('token', payload.token);
return {
...state,
...payload,
isAuthenticated: true,
loading: false
}
case REGISTER_FAIL:
case AUTH_ERROR:
case LOGIN_FAIL:
case LOGOUT:
localStorage.removeItem('token');
return {
...state,
token: null,
isAuthenticated: false,
loading: false
}
case ONLINE:
return{
...state,
online: payload
}
default:
return state;
}
}
解决方案
您是否正在请求获取用户对象?我认为它只是获取一个站点(可能是您自己的)而不是获取用户对象。
请分享您的代码以获取用户并将其存储到状态
推荐阅读
- reactjs - 用 Luxon 进行单元测试:我如何模拟 .setZone('local')
- python - 如何使用所述垃圾列表从文件名中取出所有垃圾?
- tfs - 下载除 TFS 中的一个以外的所有变更集
- javascript - c3.js destroy() -- 未捕获的类型错误:无法读取 null 的属性“删除”
- c# - 如何清除嵌套在 TabControl、TabPage 和 2 个面板中的文本框?
- python - 如果我们在命令行上从分配的应用程序开始,ArgumentParser 就不能正常工作
- django - 如何将 Django 语句添加到 Javascript
- python - 使用 tcp 重传的可靠 udp
- ios - 截取被 UIImageView 对象覆盖的区域
- c++ - 在方法内部调用方法会导致开销吗?