记一次react项目排bug

  最近在做一个react项目,使用前后端分离的形式,前端发送请求得到后端响应后重新进行渲染。

  在一次重新渲染时,react总是报错:TypeError: Cannot read property of .. undefined,通过控制台输出发现state中的user未被正确的赋值,那么到底是哪一步除了错误呢。

  首先对代码进行测试,发现代码总是在constructor函数的this.setState的语句就会产生错误,

  

axios({
method: 'post',
url: preURL + '/user/getUserInfo',
dataType: 'json',
headers: {
'Content-Type': 'application/json'
}
}).then((response) => {
console.log("header getUserInfo response:", response);
if (response.data.code === "200") {
this.setState({user: response.data.data});
} else {
Modal.error({title: '用户信息错误', content: '无法获取用户信息,请重新登录!'});
hashHistory.push('/login');
}
}).catch((error) => {
console.log("getUserInfo error:", error);
Modal.error({title: '网络错误', content: '无法获取用户信息,请重新登录!'});
hashHistory.push('/login');
});

  由于使用了ES6的箭头函数,使用this应该不会出现问题,经过关键词axios setstate TypeError: Cannot read property of undefined关键词搜索后,发现有建议不把ajax请求放在constructor一说,但是毕竟是建议,在尝试将ajax请求放在独立的函数中时仍然报错,期间也尝试过将setSate单独分离出来作为一个函数,但是报错依然。

  最后想起来检查response的格式问题,发现原来是自己搭建用于测试的后台传送数据出了问题,由于使用json格式来进行传输,后端代码在格式化时将response中的data少用了一个单引号来包裹,这样就导致了前端从response中读取data读取不到的问题,由于少了一个符号,但从response的整体结构很难看出错误。

  所以在以后的开发中,遇到bug首先要将bug具体化,具体在哪一步除了问题,这一次就是因为本以为是在setState除了问题,结果是因为在response解析出data数据时出现的错误,以后代码还是要更细心。

转载于:https://www.cnblogs.com/xiaobaihaha/p/8577162.html

创建一个React项目有几种方式可以选择。一种常用的方式是使用create-react-app脚手架快速搭建React项目。这个脚手架提供了一个简单的命令行工具,可以帮助你快速创建一个React项目的基本结构和配置。另一种方式是使用generator-react-webpack脚手架搭建React项目。你需要先安装yeoman和generator-react-webpack,然后通过命令行工具创建项目。还有一种方式是使用webpack一步一步构建React项目,这个方式需要自己手动配置webpack和其他相关的工具。其中,create-react-app脚手架是最常推荐的方式,因为它简化了项目的搭建过程并提供了很多有用的功能和工具。所以,如果你想创建一个React项目,我建议你使用create-react-app脚手架来快速搭建项目。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [如何创建一个 react 项目](https://blog.csdn.net/mChales_Liu/article/details/111318858)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [如何创建React项目](https://blog.csdn.net/hwx865/article/details/127300342)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值