React项目升级遇到的问题复盘(2019-09-02)
老铁们,发没发现我换了个贼帅的头像,高端大气上档次,非洲大地我最凶!可把我自己牛逼坏了。
不扯啦不扯啦,抓紧进入今天的正题,从今天开始我会每天写一下每天工作的出现的问题,主要对这些问题出现的原因,以及对这些问题是怎么思考的,怎么在后续的工作中避免出现类似的问题,我的宗旨是在哪里跌倒就在哪里躺好,今天的主要问题还是来自于React项目的升级,我们一起来看一下,填填坑
问题:
1.React中父组件传递的函数和从redux中取到的函数的命名问题
2.React中获取数据的异步请求该注意的地方
3.对React版本进行降级导致的React.createContext()抛错问题
问题一的原因与思考:React中父组件传递的函数和从redux中取到的函数的命名问题
情景:将React中父组件传递过来的函数名和从redux中拿到的函数名写了相同的名字,导致了一系列的问题
思考:由于命名混淆,导致后续别的同学维护项目时需要花费大量的时间来看代码·熟悉代码,相似的命名容易对维护同学的思路造成影响
方案:可以将两者区分开来,比如父组件传递函数的时候给函数加一个_或者一个特殊的前缀,这样保证在以后项目被升级时,升级的同学可以迅速的找到对应的函数,以提高升级的效率
问题二的原因和思考: React中获取数据的异步请求该注意的地方
情景:B页面发送添加条目请求后通过跳转路由的方式跳转到了A页面(A页面显示所有条目),结果添加请求发送后,跳转到A页面A页面并没有实时的将刚添加的条目显示出来
思考:1.当看到这种情况出现我首先怀疑的是组件应该是接受到了新的数据未发生更新,
采取方案:保证返回新stroe,结果:失败
2.后发现请求接口是304,遂怀疑是接口一直没有拿到更新后的接口数据,
采取方案:接口附加时间戳,结果: 发现拿到的数据依旧是更新前的
3.采取方案:将跳转的方法延迟了两秒,结果:A页面正常
4.发现是由于B调用添加条目请求后直接跳转到了A页面,A页面获取所有条目的接口立即执行返回数据,而此时添加条目还并未进入所有条目当中
采取方案:将跳转方法扔到添加条目的回调中去,将并联执行的两个操作变为串联执行,即将异步变为同步 结果:A页面正常
问题三的原因和思考:对React版本进行降级导致的React.createContext()抛错问题
情景:由于误操作将React16.9.0版本替换为了React16.0.0,导致原本可以正常执行的项目抛错:React.createContext() is not a function
思考:查看后发现在React16.0.0中根本不存在这个方法,后经过查找发现,React.createContext()是在16.3.0版本之后才被加入进来的
方案:选择合适的Raect版本即可
此为每日复盘系列的第一篇,希望能一直坚持下去,实现自己的梦想
React项目升级遇到的问题复盘(2019-09-02)的更多相关文章
- React Native升级方法——升级到最新版本0.59
React Native最近有大动作,于2019年3月12日发布新版本0.59.主要有两点值得升级:支持React Hooks:升级了JavaScriptCore,使Android性能有大幅提升.据用 ...
- 如何快速把 Vue 项目升级到 webpack3
由于 webpack3升级后,新增了 Scope Hositing(作用域提升) 功能,据说是对 js的性能提升很大.因此,我们做了一个测试对比,就是 webpack3和 webpack1/2 的性能 ...
- 基于webpack的React项目搭建(一)
前言 工欲善其事,必先利其器.为了更好的学习React,我们先简要的把开发环境搭建起来.本文主要介绍使用webpack搭建React项目,如果你对React或es6的基础语法还不了解,建议先去学习学习 ...
- React项目中使用Mobx状态管理(二)
并上一节使用的是普通的数据状态管理,不过官方推荐使用装饰器模式,而在默认的react项目中是不支持装饰器的,需要手动启用. 官方参考 一.添加配置 官方提供了四种方法, 方法一.使用TypeScrip ...
- 【react npm】解决用npmstart启动别人的react项目的问题1:sha1-xxx checksum failed wanted sha1-xxx but got sha512-xxx. (10700 bytes)
1.npm是nodejs的包管理器,相当于php的composer,python的pip,用于安装各种包. 2.一般来说,别人拷给你的react项目不会带依赖包的,因为太大了,需要用npm命令自己安装 ...
- React 项目引入 Dva
背景 现在手上在做的 React 项目因为年代久远,用的 Redux,写代码的体验不太好,所以想升级一下引入 dva.以往使用 dva 都是使用 dva-cli 直接生成 dva 项目,或者在使用 a ...
- (转)react 项目构建
原文:https://segmentfault.com/a/1190000016342792 写在前面 每次构建react项目的时候都会配置一大堆东西,时间久了就会忘记怎么配置.为了方便自己记忆也为了 ...
- 搭建React项目环境【1】
1.安装NodeJS6.0以上自带npm依赖包管理工具 2.webstrom 2019.2 工具 1.在cmd输入node -v就可以看到node的当前版本 2.在输入node进入node环境 3.查 ...
- react全家桶从0搭建一个完整的react项目(react-router4、redux、redux-saga)
react全家桶从0到1(最新) 本文从零开始,逐步讲解如何用react全家桶搭建一个完整的react项目.文中针对react.webpack.babel.react-route.redux.redu ...
随机推荐
- Java常用命令及参数
Java的基本指令参数 javac [-d 目录|-verbose] file java [-classpath(cp) dir] file jar -zcvf dir file javap [-pr ...
- 【Mac】nsurlsessiond 后台下载问题的解决方法
最近在使用 Mac 系统的时候,经常发现 nsurlsessiond 这个进程,一直在后台下载,非常占用网速.解决方案如下: 通过终端执行下面的语句可以停止后台的自动更新: #!/bin/sh lau ...
- UE4 坐标系 坐标轴旋转轴
Pitch是围绕Y轴旋转,也叫做俯仰角. Yaw是围绕Z轴旋转,也叫偏航角. Roll是围绕X轴旋转,也叫翻滚角. UE4里,蓝图中的rotation的三个依次为roll,pitch,yaw.C++中 ...
- Java基础之二十 并发
20.1 并发得多面性 并发编程令人困惑的一个主要原因:使用并发时需要解决的问题有多个,而实现并发的方法也有多种,并且在这两者之间没有明显的映射关系. 20.1.1 更快的执行 速度问题初听起来很简单 ...
- 自定义itemClickView
极力推荐文章:欢迎收藏 Android 干货分享 阅读五分钟,每日十点,和您一起终身学习,这里是程序员Android 本篇文章主要介绍 Android 开发中的部分知识点,通过阅读本篇文章,您将收获以 ...
- 我的第一个py爬虫-小白(beatifulsoup)
一.基本上所有的python第一步都是安装.安装 我用到的第三方安装包(beatifulsoup4.re.requests).还要安装lxml 二.找个http开头的网址我找的是url="h ...
- 佳木斯集训Day7
毒瘤出题人!!! T2的题面和样例不一样,所以我挂了(没错这就是我写模拟写挂了的理由) T1 大水题,懒得解释了,五分钟AC #include <bits/stdc++.h> #defin ...
- java并发编程(十五)----(线程池)java线程池简介
好的软件设计不建议手动创建和销毁线程.线程的创建和销毁是非常耗 CPU 和内存的,因为这需要 JVM 和操作系统的参与.64位 JVM 默认线程栈是大小1 MB.这就是为什么说在请求频繁时为每个小的请 ...
- Element UI系列:Select下拉框实现默认选择
实现的主要关键点在于 v-mode 所绑定的值,必须是 options 数组中对应的 value 值
- 基于python语言使用余弦相似性算法进行文本相似度分析
编写此脚本的目的: 本人从事软件测试工作,近两年发现项目成员总会提出一些内容相似的问题,导致开发抱怨.一开始想搜索一下是否有此类工具能支持查重的工作,但并没找到,因此写了这个工具.通过从纸上谈兵到着手 ...