通过js修改当前分页的样式?

Object.assign()用于把一个或多个源对象的可枚举属性复制到目标对象中,返回值为目标对象

10.JavaScript中的可枚举属性与不可枚举属性

在JavaScript中,对象的属性分为可枚举和不可枚举之分,它们是由属性的enumerable值决定的。可枚举性决定了这个属性能否被for…in查找遍历到。js中基本包装类型的原型属性是不可枚举的,如Object, Array, Number等,

Store 是保存数据的地方,可以把它看成一个容器,整个应用只能有一个 Store。Redux 提供createStore这个函数来生成 Store。

上面代码中,createStore函数接受另一个函数作为参数,返回新生成的 Store 对象。

Store对象包含所有数据。如果想得到某个时点的数据,就要对 Store 生成快照。这种时点的数据集合,就叫做 State。




21.新增的时候要传空对象过去,否则先点击编辑再点击新增,新增界面会和编辑界面一样(对象会被缓存)

24.对于一个查询最好定义四个action

//获取排课表信息周\月数据量
//获取排课表信息周\月数据量

28.根据接口返回数据的类型调用不同的请求方法,返回是json使用request; 返回字符串或者无返回值的使用autoRefreshTokenFetch,再将返回数据使用 .json()转化成json

//获取活跃人数 (接口只返回了 11)

29.Select的value只能是String类型的数据,有时候数据库取出来的是Number的,想要利用initialValue初始显示在Form表单中的话需要将Number的转化成String,否则在下拉框中将会直接显示数字

30.在Form表单中,想要使按Enter键的作用和点击某个按钮的作用一样,可以在那个按钮上加 htmlType="submit" 属性

比如在输入框输入完东西后想按enter键进行查询,那么可以在 查询 按钮上加该属性

37.Select要求value的类型要为string,将number转化为string的方法为:加个'',但要注意在初始化时也要给初始值加上'',否则显示不出value对应的值,同时后台需要number类型的数据时记得传过去的时候要用parseInt将字符串转成数字

40.import一个组件时,如果组件导出时使用了关键字default,则导入时不需将组件用{},若没有default则需要

map():返回一个新的Array,每个元素为调用func的结果
forEach():没有返回值,只是针对每个元素调用func

Promise是一个构造函数,自己身上有all、reject、resolve这几个眼熟的方法,原型上有then、catch等同样很眼熟的方法。这么说用Promise new出来的对象肯定就有then、catch方法。

Promise的构造函数接收一个参数(是函数),这个参数又传入两个参数:resolve,reject,分别表示异步操作执行成功后的回调函数和异步操作执行失败后的回调函数。其实这里用“成功”和“失败”来描述并不准确,按照标准来讲,resolve是将Promise的状态置为fullfiled,reject是将Promise的状态置为rejected。

在上面的代码中,我们执行了一个异步操作,也就是setTimeout,2秒后,输出“执行完成”,并且调用resolve方法。

运行代码,会在2秒后输出“执行完成”。注意!我只是new了一个对象,并没有调用它,我们传进去的函数就已经执行了,这是需要注意的一个细节。所以我们用Promise的时候一般是包在一个函数中,在需要的时候去运行这个函数,如

在我们包装好的函数最后,会return出Promise对象,也就是说,执行这个函数我们得到了一个Promise对象。还记得Promise对象上有then、catch方法吧?这就是强大之处了,看下面的代码

//后面可以用传过来的数据做些其他操作

在runAsync()的返回上直接调用then方法,then接收一个参数,是函数,并且会拿到我们在runAsync中调用resolve时传的的参数。运行这段代码,会在2秒后输出“执行完成”,紧接着输出“随便什么数据”。

这时候你应该有所领悟了,原来then里面的函数就跟我们平时的回调函数一个意思,能够在runAsync这个异步任务执行完成之后被执行。这就是Promise的作用了,简单来讲,就是能把原来的回调写法分离出来,在异步操作执行完后,用链式调用的方式执行回调函数。

你可能会不屑一顾,那么牛逼轰轰的Promise就这点能耐?我把回调函数封装一下,给runAsync传进去不也一样吗,就像这样:

效果也是一样的,还费劲用Promise干嘛。那么问题来了,有多层回调该怎么办?如果callback也是一个异步操作,而且执行完后也需要有相应的回调函数,该怎么办呢?总不能再定义一个callback2,然后给callback传进去吧。而Promise的优势在于,可以在then方法中继续写Promise对象并返回,然后继续调用then来进行回调操作。

(链式操作的用法)所以,从表面上看,Promise只是能够简化层层回调的写法,而实质上,Promise的精髓是“状态”,用维护状态、传递状态的方式来使得回调函数能够及时调用,它比传递callback函数要简单、灵活的多。所以使用Promise的正确场景是这样的:

这样能够按顺序,每隔两秒输出每个异步回调中的内容,在runAsync2中传给resolve的数据,能在接下来的then方法中拿到。

在then方法中,你也可以直接return数据而不是Promise对象,在后面的then中就可以接收到数据了,比如我们把上面的代码修改成这样:

return '直接返回数据'; //这里直接返回数据

到这里,你应该对“Promise是什么玩意”有了最基本的了解。那么我们接着来看看ES6的Promise还有哪些功能。我们光用了resolve,还没用reject呢,它是做什么的呢?事实上,我们前面的例子都是只有“执行成功”的回调,还没有“失败”的情况,reject的作用就是把Promise的状态置为rejected,这样我们在then中就能捕捉到,然后执行“失败”情况的回调。看下面的代码。

我们知道Promise对象除了then方法,还有一个catch方法,它是做什么用的呢?其实它和then的第二个参数一样,用来指定reject的回调,用法是这样:

效果和写在then的第二个参数里面一样。不过它还有另外一个作用:在执行resolve的回调(也就是上面then中的第一个参数)时,如果抛出异常了(代码出错了),那么并不会报错卡死js,而是会进到这个catch方法中。请看下面的代码:

在resolve的回调中,我们console.log(somedata);而somedata这个变量是没有被定义的。如果我们不用Promise,代码运行到这里就直接在控制台报错了,不往下运行了。但

也就是说进到catch方法里面去了,而且把错误原因传到了reason参数中。即便是有错误的代码也不会报错了,这与我们的try/catch语句有相同的功能。

Promise的all方法提供了并行执行异步操作的能力,并且在所有异步操作执行完后才执行回调。我们仍旧使用上面定义好的runAsync1、runAsync2、runAsync3这三个函数,看下面的例子Promise

用Promise.all来执行,all接收一个数组参数,里面的值最终都算返回Promise对象。这样,三个异步操作的并行执行的,等到它们都执行完后才会进到then里面。那么,三个异步操作返回的数据哪里去了呢?都在then里面呢,all会把所有异步操作的结果放进一个数组中传给then,就是上面的results。

有了all,你就可以并行执行多个异步操作,并且在一个回调中处理所有的返回数据,是不是很酷?有一个场景是很适合用这个的,一些游戏类的素材比较多的应用,打开网页时,预先加载需要用到的各种资源如图片、flash以及各种静态文件。所有的都加载完后,我们再进行页面的初始化。

all方法的效果实际上是「谁跑的慢,以谁为准执行回调」,那么相对的就有另一个方法「谁跑的快,以谁为准执行回调」,这就是race方法,这个词本来就是赛跑的意思。race的用法与all一样,我们把上面runAsync1的延时改为1秒来看一下:

这三个异步操作同样是并行执行的。结果你应该可以猜到,1秒后runAsync1已经执行完了,此时then里面的就执行了,你猜对了吗?不完全,是吧。在then里面的回调开始执行时,runAsync2()和runAsync3()并没有停止,仍旧再执行。于是再过1秒后,输出了他们结束的标志。

这个race有什么用呢?使用场景还是很多的,比如我们可以用race给某个异步请求设置超时时间,并且在超时后执行相应的操作,代码如下:

requestImg函数会异步请求一张图片,我把地址写为"xxxxxx",所以肯定是无法成功请求到的。timeout函数是一个延时5秒的异步操作。我们把这两个返回Promise对象的函数放进race,于是他俩就会赛跑,如果5秒之内图片请求成功了,那么遍进入then方法,执行正常的流程。如果5秒钟图片还未成功返回,那么timeout就跑赢了,则进入catch,报出“图片请求超时”的信息。运行结果如下:


ES6为Array增加了from函数用来将其他对象转换成数组。
当然,其他对象也是有要求,也不是所有的,可以将两种对象转换成数组。
2.类数组对象,什么叫类数组对象,就是一个对象必须有length属性,没有length,转出来的就是空数组。

解决组件动态加载问题的 util 方法。

46.react项目使用npm build命令(将开发完的前端代码,利用webpack打包成静态压缩文件)构建出静态文件,这些静态文件可以直接在浏览器打开,之前的财联邦项目发布就是使用的这个方式,同样还可以在服务器安装nodejs,然后把代码clone过去直接用npm start命令也可以启动项目访问页面(在本地开发的时候就是这样)

* 作为静态文件服务器,当用户访问网站的时候,将index.html以及其引入的js、css、fonts以及图片返回给用户
* 负责将客户端发来的ajax请求转发给后台服务器

48.map()中的元素都需要属性key。在哪儿循环就在哪儿设置key

49.key用来作为React的观察点,但它们不会传递给组件。 如果你需要在组件中使用相同的值,则使用不同的名称显式地将它作为props传递:

50.如果有几个组件需要反映相同的变化数据,建议将共享state提升到层级最近的,并且是共同的父组件上。

对于在React应用程序中更改的任何数据,都应该有一个唯一的“数据来源”,也就是state。通常,首先将state添加到需要渲染的组件。如果其他组件也需要它,你可以将其提升到它们层级最近的共同父级组件中。而不是尝试在不同组件之间去同步状态,总归就一句话:你应该依赖于自上而下的数据流


* eval 文档上解释的很明白,每个模块都封装到 eval 包裹起来,并在后面添加 //# sourceURL

* 这么多模式,到底该用哪个? * 大部分情况我们调试并不关心列信息,而且就算 sourcemap 没有列,有些浏览器引擎(例如 v8) 也会给出列信息,所以我们使用 cheap 模式可以大幅提高 souremap 生成的效率。
  • (1)首先使用 Chrome 打开需要调试的 React 页面,并打开“开发者工具”。
    (2)在“开发者工具”上方工具栏最右侧会有个 react 标签。点击这个标签就可以看到当前应用的结构。
    通过 React Developer Tools 我们可以很方便地看到各个组件之间的嵌套关系以及每个组件的事件、属性、状态等信息。




(5)修改某一处为错误,然后观察结果


this.props 对象的属性与组件的属性一一对应,但是有一个例外,就是 this.props.children 属性。它表示组件的所有子节点(查看 )。



这里需要注意, this.props.children 的值有三种可能:如果当前组件没有子节点,它就是 undefined ;如果有一个子节点,数据类型是 object ;如果有多个子节点,数据类型就是 array 。所以,处理 this.props.children 的时候要小心。

React 提供一个工具方法 来处理

  • 布尔值、null、undefined在渲染时会被自动忽略
    false,null,undefined和true是有效的子元素,不过他们从根本上讲是不参与渲染的。 这些JSX表达式将渲染处相同的东西:



    如果你想要一个值如false,true,null或undefined出现在输出中,你必须先将它转换为字符串:


57.JSX会删除行的开始和结尾处的空格。 它也会删除中间的空行。 与标签相邻的空行被会被删除;

在字符串文本中间出现的空行会缩合成一个空格。

58.instanceof 运算符用来测试一个对象在其原型链中是否存在一个构造函数的 prototype 属性。

    scrollTo:在窗体中如果有滚动条,将横向滚动条移动到相对于窗体宽度为x个
    像素的位置,将纵向滚动条移动到相对于窗体高度为y个像素的位置
    scrollBy:(要使此方法工作 window 滚动条的可见属性必须设置为true!)
    如果有滚动条,将横向滚动条移动到相对于当前横向滚动条的x个像素的位置
    (就是向左移动x像素),将纵向滚动条移动到相对于当前纵向滚动条高度为y个像素的位置(就是向下移动y像素)

”命令安装,因为我们在发布后用不到它,而只是在我们开发才用到它。dependencies 下的模块,则是我们发布后还需要依赖的模块,譬如像jQuery库或者Angular框架类似的,我们在开发完后后肯定还要依赖它们,否则就运行不了。



audio对象的方法和属性:

我们可以动态把一个audio元素插入到页面中,从而通过 JS 来获取这个对象,简单的方法如下:




  • useCapture 是否使用捕捉,看了后面的事件流一节后就明白了,一般用 false。

当一个事件发生时,分为三个阶段:
捕获阶段-- 从根节点开始顺序而下,检测每个节点是否注册了事件处理程序。如果注册了事件处理程序,并且 useCapture 为 true,则调用该事件处理程序。(IE 中无此阶段。)
目标阶段-- 触发在目标对象本身注册的事件处理程序,也称正常事件派发阶段。
冒泡阶段-- 从目标节点到根节点,检测每个节点是否注册了事件处理程序,如果注册了事件处理程序,并且 useCapture 为 false,则调用该事件处理程序。

如果在 d3 上点击鼠标,事件流是这样的:
捕获阶段 在 div1 处检测是否有 useCapture 为 true 的事件处理程序,若有,则执行该程序,然后再同样地处理 div2。
目标阶段 在 div3 处,发现 div3 就是鼠标点击的节点,所以这里为目标阶段,若有事件处理程序,则执行该程序,这里不论 useCapture 为 true 还是 false。
冒泡阶段 在 div2 处检测是否有 useCapture 为 false 的事件处理程序,若有,则执行该程序,然后再同样地处理 div1。
注意,上述捕获阶段和冒泡阶段中,实际上 div1 之上还应该有结点,比如有 body,但这里不讨论。


  • useCapture 是否使用捕捉,看了后面的事件流一节后就明白了,一般用 false。

说到 addEventListener 不得不说到事件流,先说事件流对后面的解释比较方便。

当一个事件发生时,分为三个阶段:

捕获阶段 从根节点开始顺序而下,检测每个节点是否注册了事件处理程序。如果注册了事件处理程序,并且 useCapture 为 true,则调用该事件处理程序。(IE 中无此阶段。)

目标阶段 触发在目标对象本身注册的事件处理程序,也称正常事件派发阶段。

冒泡阶段 从目标节点到根节点,检测每个节点是否注册了事件处理程序,如果注册了事件处理程序,并且 useCapture 为 false,则调用该事件处理程序。

如果在 d3 上点击鼠标,事件流是这样的:

捕获阶段 在 div1 处检测是否有 useCapture 为 true 的事件处理程序,若有,则执行该程序,然后再同样地处理 div2。

目标阶段 在 div3 处,发现 div3 就是鼠标点击的节点,所以这里为目标阶段,若有事件处理程序,则执行该程序,这里不论 useCapture 为 true 还是 false。

冒泡阶段 在 div2 处检测是否有 useCapture 为 false 的事件处理程序,若有,则执行该程序,然后再同样地处理 div1。

注意,上述捕获阶段和冒泡阶段中,实际上 div1 之上还应该有结点,比如有 body,但这里不讨论。

addEventListener 有三个参数:第一个参数表示事件名称(不含 on,如 "click");第二个参数表示要接收事件处理的函数;第三个参数为 useCapture,本文就讲解它。

  • 如果多个均为 true,则外层的触发先于内层;

  • 如果多个均为 false,则内层的触发先于外层。

68.pop() 方法将删除 arrayObject 的最后一个元素,把数组长度减 1,并且返回它删除的元素的值。如果数组已经为空,则 pop() 不改变数组,并返回 undefined 值。

比如你的计算机IP地址是192.168.1.10,项目名称是app,那么你的访问url就可以是。
这样设置的好处是,当你想用非本机访问项目进行测试时,由ip地址构建的url可以对项目进行访问,同时本地还可以用localhost进行访问。如果你将ip写死了,那么localhost就无法访问了;

70.reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。

注意: reduce() 对于空数组是不会执行回调函数的。

75.Object.assign() 方法用于将所有可枚举属性的值从一个或多个源对象复制到目标对象。它将返回目标对象。如果目标对象中的属性具有相同的键,则属性将被源中的属性覆盖。后来的源的属性将类似地覆盖早先的属性,但是Object.assign 不会跳过那些值为 null 或 undefined 的源对象

76.hasOwnProperty() 方法会返回一个布尔值,指示对象自身属性中是否具有指定的属性

78.map只能遍历数组,其他用for...in...,或者排除掉那个非枚举属性再map


79..遇到过两次setState设置某个属性的值,在回调函数中打印发现没设置成功,都是因为同一个函数里面写了多个setState,一定要注意,后面的setState可能会把前面set的值给覆盖掉

80.可利用Jquery的 .text方法实时计算文本域还能输入多少字符:总数-已输入

81.html文件是自上而下的执行方式,但引入的css和javascript的顺序有所不同,css引入执行加载时,程序仍然往下执行,而执行到<script>脚本是则中断线程,待该script脚本执行结束之后程序才继续往下执行。所以,大部分网上讨论是将script脚本放在<body>之后,那样dom的生成就不会因为长时间执行script脚本而延迟阻塞,加快了页面的加载速度。但又不能将所有的script放在body之后,因为有一些页面的效果的实现,是需要预先动态的加载一些js脚本。所以这些脚本应该放在<body>之前。其次,不能将需要访问dom元素的js放在body之前,因为此时还没有开始生成dom,所以在body之前的访问dom元素的js会出错,或者无效。所以,我认为script放置位置的原则“页面效果实现类的js应该放在body之前,动作,交互,事件驱动,需要访问dom属性的js都可以放在body之后”。

defer 属性规定是否对脚本执行进行延迟,直到页面加载为止。
如果您的脚本不会改变文档的内容,可将 defer 属性加入到 <script> 标签中,以便加快处理文档的速度。因为浏览器知道它将能够安全地读取文档的剩余部分而不用执行脚本,它将推迟对脚本的解释,直到文档已经显示给用户为止。


注意:>隔开表示 子集(向下一层);空格 隔开表示 子集或子孙集 (向下多层,范围更广)

85.覆盖antd样式不生效时,试着在需要覆盖的样式前加 :gloabal



87.7制造间距的方法

①将一个div设成间距,间距的颜色为div的背景色
②给其中一个div设置border,border的宽度即为间距的宽度
③利用box-shadow,将第一个和第三个参数都设置为0,第二个参数为间距的宽度,注意:同时要给margin值,投影到top方向就要给margin-top


88.onsenui实现下拉列表展开样式仿淘宝



delete 操作符用于删除对象的某个属性;如果没有指向这个属性的引用,那它最终会被释放




②注意: 对大小写敏感! 如果要检索的字符串值没有出现,则该方法返回 -1。

93.一个大div包含两个div,怎么让左边的固定宽度,另一个撑满剩下宽度




① Set是ES6中新的对象。 利用它可以迅速为数组去重


简单来说,Set于Array的区别在于:Array中允许出现重复的元素,例如[1,2,2,3];而Set中的所有元素都是唯一的,只能是{1,2,3}。利用这一特性,我们就可以迅速地去掉数组中重复的元素。










回顾 npm install 命令最近在写Node程序的时候,突然对 npm install 的-save和-save-dev 这两个参数的使用比较混乱。其实博主在这之前对这两个参数的理解也是模糊的,各种查资料和实践后对它们之间的异同点略有理解。遂写下这篇文章避免自己忘记,同时也给node猿友一点指引。
我们在使用 npm install 安装模块的模块的时候 ,一般会使用下面这几种命令形式:

那么问题来了,在项目中我们应该使用四个命令中的哪个呢?这个就要视情况而定了。下面对这四个命令进行对比,看完后你就不再这么问了。

    1. 运行 npm install 初始化项目时不会下载模块。
    1. 安装模块到全局,不会在项目node_modules目录中保存模块包。
    2. 运行 npm install 初始化项目时不会下载模块。
    1. 运行 npm install 初始化项目时,会将模块下载到项目目录下。
    1. 运行 npm install 初始化项目时,会将模块下载到项目目录下。devDependencies 节点下的模块是我们在开发时需要用的,比如项目中使用的 gulp ,压缩css、js的模块。这些模块在我们的项目部署后是不需要的,所以我们可以使用 -save-dev 的形式安装。像 express 这些模块是项目运行必备的,应该安装在 dependencies 节点下,所以我们应该使用 -save 的形式安装。

同构应用:什么是前后端同构呢?就是前后端都可以使用同一套代码生成页面,页面既可以由前端动态生成,也可以由后端服务器直接渲染出来
单页面应用:就是只有一张Web页面的应用。单页应用程序 (SPA) 是加载单个HTML 页面并在用户与应用程序交互时动态更新该页面的Web应用程序。 浏览器一开始会加载必需的HTML、CSS和JavaScript,所有的操作都在这张页面上完成,都由JavaScript来控制。直白一点就是只有一个html文件的应用。react,vue等做的都是单页面的






takeEvery 允许多个 fetchData 实例同时启动。在某个特定时刻,我们可以启动一个新的 fetchData 任务, 尽管之前还有一个或多个 fetchData 尚未结束。
takeLatest 得到最新那个请求的响应(例如,始终显示最新版本的数据)。 和 takeEvery 不同,在任何时刻 takeLatest 只允许执行一个 fetchData 任务。并且这个任务是最后被启动的那个。 如果之前已经有一个任务在执行,那之前的这个任务会自动被取消。


在 Generator 函数中,yield 右边的任何表达式都会被求值,结果会被 yield 给调用者

无阻塞调用。 当我们 fork 一个 任务,任务会在后台启动,调用者也可以继续它自己的流程,而不用等待被 fork 的任务结束。 yield fork 的返回结果是一个

为了取消 fork 任务,使用的一个指定的 Effect


yield* 操作符来组合多个 Sagas,使得它们保持顺序。 这让你可以一种简单的程序风格来排列你的 宏观任务(macro-tasks)。


102.previousSibling属性返回元素节点之前的兄弟节点(包括文本节点、注释节点);

previousElementSibling属性只返回元素节点之前的兄弟元素节点(不包括文本节点、注释节点);

txt,png,jpg等这些浏览器支持直接打开的文件是不会执行下载任务的,而是会直接打开文件,这个时候就需要给a标签添加一个属性“download”;
  • 106.对象中数组对象去重



107.8到20位的可输入半角符号,但不含空格并且至少包含一个数字和字母

108.控制台报错解决





  • 定位问题:通过 '>' expected可以想到>是html片段符号,而文件后缀是ts,也就是文件类型应该是tsx。所以把文件后缀改为tsx,问题解决








109.antd中父组件怎么使用子组件的form中自带的属性

  • 1.父组件将form传给子组件,子组件使用父组件传下来的form








  • ②在各个子组件中使用Form,然后在父组件ExamCreation中调用的子组件上加上那个属性,最后就可以像在子组件一样使用form中的API了。(注意:使用typeScript时一定要先定义this.form3...)

    子组件通过Form创建


使用子组件Form中的方法





②用国际化组件将分页组件包裹起来






111.在git上提merge request的时候,上面检测到的更改是,自己的远程分支和master分支代码对比的结果


Redirect是一个组件,将组件嵌套在ts代码中,文件类型要改为tsx

113.浏览器在传递url的时候,会使用自己的编码格式对地址进行编码,如果浏览器所使用编码与服务器采用编码不一致,服务器接收到的参数就会出现乱码。在firefox,chrome下正常,ie下会出现乱码。

115.日期格式转时间戳

注意:两种方法在三个浏览器都能起作用的日期格式是 / 分割的,所以要使用该方法的话使用 .replace()转化,如IE下的:


117.修改滚动条默认样式

/*定义滚动条轨道 内阴影+圆角*/ /*定义滑块 内阴影+圆角*/

第1,2个customer是在model中的命名空间,第3,4个是同一个

根据状态值动态添加或去除class.

可以看到键值为true的就返回键名,可以利用这个方法来动态控制键值的true/fale变化,从而控制是否返回键。(默认是返回的)

直接调用构造函数使用,一个可能含某种匹配模式的路径字符串作为它的必选参数,它返回一个正则对象。

/foo/:bar中的/为分隔符,把多个匹配模式分隔开,这里就分成foo和:bar。像foo这种不带:前缀的,我们请求的路径需要和它完全匹配,而:bar这种,叫命名参数,就像个函数形参,可以传递任何请求路径字串给它。


在命名参数上,我们可以使用参数修饰符作为其后缀,有?、+、*

  • “*”:表示我这个命名参数:bar可以接收随意个匹配模式,就好像参数数组长度[0,+∞)

  • “+”: 表示命名参数可以接收至少一个匹配模式,一个都没就匹配失败,[1,+∞)

  • “? ”:表示命名参数可以接收0个或1个匹配模式,多个失败,[0,1]

我们还可以为命名参数加上自定义的正则匹配模式

// 以下设置表示:foo只能是数字。
//不需要命名参数这个占位符,通过正则就能就能匹配。

把提交函数写在Form上会导致:表单提交后在地址栏会添一个“?”,界面刷新

123.字段描述值根据值集展示

方法会直接在一个对象上定义一个新属性,或者修改一个已经存在的属性, 并返回这个对象。“`

prop:需要定义或修改的属性; descriptor:将被定义或修改属性的描述符

对象里目前存在的属性描述符主要有两种形式: 数据描述符和存取描述符.

不更新的原因:更新src后,如果src与原来的相同,则浏览器回从缓存里获取图片而不会向后台发送新的请求
解决办法:在src之后加上一些没有意义的随机参数比如链接上“?time=new Date().getTime()”即获取当前时间的时间戳,这是浏览器会认为这是不同的url因此会重新发送请求加载新的图片。 改成如下样子会导致新的问题:每次进入界面都请求好几次

解决方法:将url后的随机变量的值从models中传过来

  • Provider 组件。用在组件树中更外层的位置。它接受一个名为 value 的 prop,其值可以是任何 JavaScript 中的数据类型。
  1. 方法的影响。前面的示例代码中,Hello 组件继承自 React.PureComponent 但页面依然能正确显示足以说明这一点。
  2. Consumer 组件接收一个函数作为 children prop 并利用该函数的返回值生成组件树的模式被称为 Render Props 模式。详细介绍请参考

127.在models层获取全局状态树数据

选中控制一定要通过selectedRowKeys,不然会出现选中的key是空时,界面上还有勾

现象:react项目发布后, 需要用户手动刷新浏览器才能正常运行。有md5值, js每次更改代码后, 打包出的hash值也是不同的, 但用户必须刷新页面缓存才能正常使用
index.html被缓存了,被缓存的index.html引用的是旧版js、css资源,这些资源也被浏览器缓存过,所以加载的是上次访问的页面。
解决方法:修改下nginx配置就可以了

130.查找nginx配置文件所在位置

131. 修改本地启动端口

如果需要保存 就是 写在 环境变量的 地方;
直接设置 当前环境变量就好了。

指定在什么情况下 (如果有) 某个特定的图形元素可以成为鼠标事件

2.在main.js中引入,这里是全部引入,也可以按需引入

/*上下页可点击的样式*/ /*不是当前页其他页码hover样式*/
  • 说明:本文基于element-ui@2.13.0,源码详见element。 一、主题相关代码结构: 可以看出两点:...

  • 项目创建好了,我们开始使用。提到vue一般大家都会想到与element-ui结合使用,方便我们在日常的工作中使用e...

  • 今天过了很充实的一天,结束一天的悟我之心课程以后。和孩子看了一部电影<<奇迹男孩>>,真实而感人。奇迹男孩其实谈不...

  • 九点到家正好赶上学华上班,十点开始回卧室补补觉,这个觉补的一直电话不断,晚上李金郭总两口子请客小聚,明天有时间再带...

  • 1.美妞又一次独自坐地铁回家,她的兴奋她的愉悦她的自主,我的忐忑是多余了。她一路报告到达的地点和听的樊登内容。感谢...

  • 所有的贬低都是为了抬高, 居高不必抬 强抬也抬不起来

  • 下午读到一篇文章,其中写到:越长大越发现,除了父母,真正盼望自己过得好的人极少。大部分人都希望别人过得好,但...


新建一个 js 文件,基本直接复制粘贴就行,记得引入到需要的页面中。

前面的构造函数,是用来初始化前端分页的,在需要实现分页的页面的 js 文件中调用这个构造函数,进行分页的初始化。

后面的  JumpToPage(pageIndex); 函数,是用来实现页面跳转的,是在需要实现分页的页面的 js 文件中去实现这个函数。

到这里如果还不知道是什么意思,或者怎么实现的,没事!!!直接往下看。

// 给实例对象添加公共属性和方法

新建一个 css 文件,直接复制粘贴就行。记得引入到需要的页面中。

如果对样式不满意,可以自己根据注释修改。

/*设置“首页”“上一页”“下一页”“尾页”“跳转”5个按钮的样式*/ /*设置数字按钮的样式*/ /*设置数字按钮被选中时候的按钮背景颜色*/ /*设置跳转页数的文本框的样式*/ /*设置跳转按钮的样式*/ /*设置显示总页数和总条数的样式*/

1.在需要用到的页面引入上面的 js 代码和 css 代码。

2.在页面的 html 代码中的对应要显示分页的地方补上这句代码:

后台通过 PageHelper 实现分页后将相关数据(包括需要显示的数据,总的条数,当前的页数等)传给前端,这时候前端就需要接收后台的数据,然后进行前端分页的初始化。

关于 PageHelper 后台分页,不会用的话,可以看下我的另外一篇博客:

我前端选择使用 ajax 来接受数据(不懂的可以学一下,不难的 )。

在需要分页的页面的 js 文件中,编写以下的代码:

/*自定义的函数,可以根据自己的需求来写*/ alert("管理员列表信息获取失败!");

 在需要分页的页面的 js 文件中,编写前端分页初始化的代码:

关于参数都已经打了注释,看以下就知道什么意思了。

到这里,前端与后台,已对接了哦!

如果你还有什么疑问的话,可以在评论区提问,大家一起学习进步。

我要回帖

更多关于 js获取css样式内容 的文章

 

随机推荐