1. redux是什么?答:一个专门用来做管理状态的JS库。2. 什么情况下使用redux某个组件的状态,需要让其他组件可以随时拿到。一个组件需要改变另一个组件的状态。3. redux原理图
看下面这个案例不起作用的原因上述案例中的setState函数接收到的对象只是原有state地址的引用和原地址一样,所以不起作用正确的使用方式必须得传入一个新的对象,React经过对比以为发生了变化,才会去渲染,去render...
问题描述问题原因创建的脚手架项目名中含有大写字母解决办法将大写字母换成其他即可
题目描述解题思路遇到这道题,我首先使用使用双指针,左右遍历遇到第i个元素则停止遍历,然后进行求乘积但是结果超时最终通过对称遍历的方式成功解决问题解题代码一:暴力双指针(超时)var constructArr = function (a) { // 使用左右指针两边遍历的方法 const result = []; let l = 0; let r = a.length - 1; let temp = 1; let temp2 = 1;
题目描述解题思路这道题属于考查排序的问题我们只需要将输入的整数数组按照升序进行排列然后返回前k个数字即可,这里采用JS自带的sort方法截取前k个数字采用slice方法解题代码var getLeastNumbers = function(arr, k) { arr.sort((num1,num2) => num1 - num2); return arr.slice(0,k)};总结(本题给我们的启示思路)启示一:学会使用slice进行截取启示二:学会使用
在入口文件中引入Provider通过给Provider传递store,就不用通过给每一个容器组件传递store了别忘了在入口文件引入store
题目描述解题思路我刚开始看到本题,首先想到的是暴力解法,也就是通过for循环进行不断遍历,结果超时。看了题解才知道,解决逆序对的问题,往往通过归并排序本题考查的本质还是归并排序,只是在归并排序的基础上,增加了一行代码而已。归并排序使用的是分治法的思想,本题就是建立在还是合并的时候,进行统计计算,最终求出结果。解题代码一(暴力法:超时)var reversePairs = function(nums) { let flag = 0; for (let i = 0; i &l
题目描述解题思路这道题在JS题解中一般给出了两种解法,一是动态规划,二是贪心算法本次采用的是动态规划,主要是想强化自己在这方面的学习贪心的思想是构造3,尽可能多的3相乘会使得乘积最大,通过对3取余的三种情况来分别推导最后的乘积动态规划的思想则是首先构造一个长度为n+1的全1数组,这里的n代表的是绳子的总长度,之所以要进行+1,是因为我们操作的始终是数组的下标,dp[i]代表什么含义,是我们必须要好好理解的,dp[i]代表的是长度为i的绳子被剪成n段后的最大乘积动态规划的结束条件是dp[2]=
组件间包含的内容是什么?包含的内容是传递给A组件的信息,A组件通过this.props.children可以获得
直接输入下面的命令npm run eject
1. 安装工具包npm install less-loader@7.3.0 --save-dev2. 修改 config-overrides.js文件const { override, fixBabelImports, addLessLoader } = require('customize-cra');module.exports = override( fixBabelImports('import', { libraryName: 'antd', li
题目描述解题思路这道题属于栈的相关问题本题的核心思路是采用模拟栈的方法模拟栈是一种很重要的思路,主要是定义两个数组,一个数组和真实的栈的pushpop方法一致,另一个数组则是用来存储最小值的栈,只有push的元素比最小值栈小或相等的时候,才将该元素push进最小值栈。top方法只需将真实栈的栈顶元素返回即可在进行pop方法的时候,真实栈直接pop即可,最小值栈则要判断是否pop的是自己的栈顶,是则pop,不是则不用pop解题代码var MinStack = function () {
纯函数纯函数的几个条件:同样的输入,必须是同样的输出。函数中不能改写参数的值。不会产生任何副作用,不能有网络请求和输入输出设备。不能调用Date.now()和Math.random()等不纯的方法。redux的reducer必须是一个纯函数详情可以参考这篇文章React-48:为什么redux中的reducer返回状态时不能用unshift等API?...
安装方法npm install redux-devtools-extension使用方法有异步action的情况没有异步action的情况redux-devtools-extension介绍action区域查看action对象的type和data查看redux帮我们保存的总的状态对象查看状态的比较变化回放状态的变化临时dispatch...
方式1:对象式的setState回调的方式方式2:函数式的setState通过函数式的setState,该函数能够接收到两个参数,一个是state,另一个则是props
通过NavLink可以给Link添加类名,从而实现修改样式
1. build创建npm run build2. 全局安装serve库npm i serve -g3. 以build文件夹为服务器的根目录serve build
区别一一般组件写在components文件夹下,路由组件写在pages文件夹下区别二路由组件会收到路由传递过来的props,而普通组件则不会
为什么要使用EffectHook?因为在函数式组件中无法使用生命周期钩子的,例如:componentDidMount这个生命周期钩子,通过这个Hook可以让我们在函数式组件中使用生命周期钩子。核心函数:useEffect(接收两个参数)第一个参数:是一个回调函数这个回调函数相当于是componentDidMount,这个回调函数可以返回一个回调函数,返回的这个回调函数则是相当于componentWillUnmount。第二个参数代表着监控谁,一旦监控的对象发生了变化,则要调用第一个参数里的回
1:安装react-router-domnpm install react-router-dom2:引入Link,作为跳转指向这里往往用于导航3:引入Route让React知道跳转到哪个组件4:Route和Link必须在一个路由器下,可以将整个App包含在一个路由器下...
解构Switch使用Switch包裹的路由,匹配到即停止匹配后面的同名路由
分别暴露的时候,不能自定义命名,必须和暴露的名字一致默认暴露的时候,由于只暴露了一个,所以允许自定义命名,且导入的时候不用加大括号
为什么要按需引入?像下面这种将全部样式都引入,会造成内存消耗过大,因为我们引入了很多我们并不使用的样式第一步:安装工具包npm install react-app-rewired customize-cra第二步:将项目文件中的package.json中的文件进行下面的修改第三步:项目根目录创建一个 config-overrides.js 用于修改默认配置module.exports = function override(config, env) { // do stuff .
通过模板字符串的形式传递参数声明接收解构收到的参数解构后即可使用
题目描述解题思路这道题属于考查二分查找本题如果直接采用JS中自带的排序肯定是要超时的,要不然LeetCode也不会将这道题归为困难二分查找的思路定义两个指针,一个指针指向的是数组元素的第一个下标,另一个指针指向的是数组元素的最后一个元素的下标。中位数下标指的是通过四舍五入的方法,左边指针的下标 + 右边指针的下标 / 2然后进行四舍五入,得到的就是中位数下标如果要添加的值大于中位数下标对应的值,左边的指针移动到中位数指针+1的位置。如果要添加的值小于中位数下标对应的值,右边的指针移动到中位数
使用场景当路由没有被匹配到的时候,则通过Redirect进行跳转
为什么要使用Fragment?通过React进行开发的时候,有时候会产生很多无用的包裹标签Fragment标签的效果在React进行解析的时候,会将Fragment丢掉,可以有效的防止标签包裹无效冗余。
基本使用第一级路由不能加严格模式
什么是Hook?Hook是React 16.8.0版本新增的新语法可以让使用者在函数组件中使用state以及其他的react特性使用useState使用数组的解构赋值,数组的解构赋值不需要和原本的名字一致0,'xidian’是我们的初始化状态,setXxx则是方法两种改变状态的写法...
模糊匹配严格匹配
Copyright © 2005-2025 51CTO.COM 版权所有 京ICP证060544号