replace 第一个参数可以传入 string 或 RegExp,第二个参数可以传入 string 或 一个回调函数。...在能够传入回调函数之后,事情就开始变得不简单了(如果有用过map,filter等函数,你就知道传入回调函数的强大)。...接下来我们,来看看回调函数里接受的参数到底是什么? 回调中接收到的参数 回调中最少可以接受到3个参数,最多没有上限,为什么这么说呢?...https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/replace#指定一个函数作为参数...的应用 在知道了这些参数后,我们就可以根据实际需求进行使用 假如现在有一个需求:过滤脏话,将脏话替换成对应长度的星号 let str = '菜鸡前端,在线炒粉,nmsl' let reg = /(菜鸡|
data.stargazers_count}{' '} {data.forks_count} ) } userQuery接收一个配置对象...,其中 queryKey:必传,用作请求数据缓存的唯一key值,也可以在数组中,写入多项如:['repoData', '1'],这样React-Query在使用的时候会自动把它拼接为/repoData/...除了这两项基本的参数,useQuery还可以传入上面defaultOptions的所有参数,来表示对这个请求单独的配置。...onError: (error) => { console.log(error) } }); 这里我们传入了: mutationFn:代表元数据的方法 onSuccess:接口调用成功后的回调...onError: 失败的回调 返回的数据和useQuery基本是相同的,这里的mutate则是触发更改的方法,如果我们想执行useMutation中传入的方法,我们只需要调用mutate即可,传给mutate
当 setState 完成和组件渲染后,回调函数将会被调用。由于 `setState()` 是异步的,回调函数用于任何后续的操作。...**注意:** 建议使用生命周期方法而不是此回调函数。
useProjectModel 中已经暴露了 close 方法,我们只需要在 onFinish 中调用即可 当 form 表单成功提交时,会自动调用 onFinish 方法,同时会将 form 表单中的数据作为参数...,最后返回一个 useMutation 函数调用的返回值,这个函数接收 2 个参数,一个是我们需要发的请求,一个是配置项 我们通过 client 封装我们需要发送的请求,在编辑情况下,我们需要传递 id...组件也需要拥有 Rate 组件的属性,因此我们采用了一个继承的操作 ,我们可以通过 React.ComponentProps 来获取 Rate 中的所有 props 类型,也就是接收参数的类型...在这个 hook 中我们使用了大量的 any ,无关大雅 我们在成功、提交、失败中设置了相应的回调,来处理不同的请求情况 // 乐观更新,用来生产代码的 hook // 这里的类型非常的复杂采用了很多的...useConfig 接收 2 个参数,一个是 queryKey ,一个是新值旧值的函数 因此我们通过 filter 从旧数据中过滤掉被删除的项目,这样返回的数据就是我们所要的新数据了 export const
param 作为参数,传递当前的 projectId 即可,当这个 id 变化时,表示切换了其他项目的看板,我们需要重新请求以下 export const useKanbans = (param?...return useQuery(['tasks', param], () => client('tasks', { data: param })) } 在这里就讲讲类型吧~ 在这里我们接收一个可选的参数...taskid 作为参数,用来判断这个任务是什么类型 // 通过type渲染图片 const TaskTypeIcon = ({ id }: { id: number }) => { const...queryKey 作为参数,这里它是一个数组第一个元素是缓存中的数据名称,第二个元素是它的重新刷新的依赖 export const useAddKanban = (queryKey: QueryKey...) ) } 在这里接收的参数只有 id ,删除看板的 id 五、任务的增删改查功能 增删改查的功能都差不多,只是传递的参数不一样罢了,在这里,我们就拿一个编辑功能来讲 我们首先封装了一个控制 modal
limit=${MAX_POST_PAGE}` ); const todos = (await response.json()) as TodoType[]; return todos;};要注意,该函数将接收...我会将其作为对象接收并使用解构。...但你可能会想 为什么我要解释所有这些概念,我们将需要使用观察者来查看用户是否在页面底部,以便传递下一个页面参数时获取新数据。所以,是的!...我们将在 queryKey 中传递键值 'todos',在 queryFn 中传递 fetchTodos 函数,并在 getNextPageParam 中创建一个函数来获取下一页,增加并验证我们是否有数据...让我们将箭头函数的参数new IntersectionObserver()传递给它。entries现在我们将验证页面是否相交、是否有下一页并且未获取。
但并不是 some-library 库导致的 – 因为其从未将 toReadableNumber 设计为 array.map 的回调。...问题的根源: toReadableNumber 不是为了作为 array.map 的回调而设计的,所以安全的做法是创建你自己的用于与 array.map 一起使用的函数: const readableNumbers...window.requestAnimationFrame(callback) 告诉浏览器——你希望执行一个动画,并且要求浏览器在下次重绘之前调用指定的回调函数更新动画。...该方法需要传入一个回调函数作为参数,该回调函数会在浏览器下一次重绘之前执行 更容易发现问题的例子: const parsedInts = ['-10', '0', '10', '20', '30']...,除非是专门为当前场景所设计的,否则需要注意回调函数和选项对象的问题!
useQuery 发送请求 再复习一下,它的第二个参数是一个异步事件,第一个参数是元组,当依赖项 param 发生改变时,会重新发送请求,更新缓存中的 epics 数据内容 export const...id }) 这样我们就实现了数据的获取 接下来我们来看看如何在组件中使用这两个数据的 对于 epics 它作为我们需要渲染的主内容,需要通过 List.Item 进行渲染 在 List 组件中,我们可以传入我们的数据源...删除任务组 实现思路如下 点击删除按钮,弹出提示框 确认删除 调用接口删除缓存 代码实现 当我们点击删除时,我们调用 confirmDeleteEpic 函数,进行删除确认 这个函数封装的是一个 Modal.config...useDeleteEpic 的 hook 用来处理删除请求,这里采用 useMutation 来处理,传入当前的 id ,配置删除的 config 对象 写到这里自己也对 useMutation 有了进一步的认识,它可以接收两个参数...,第一个参数我们传入我们的异步请求,第二个参数来配置 config 如何处理缓存中的数据 // 删除看板 export const useDeleteEpic = (queryKey: QueryKey
高阶函数是对其他函数进行操作的函数,可以将它们作为参数或通过返回它们。简单来说,高阶函数是一个函数,它接收函数作为参数或将函数作为输出返回。...当我们作为参数传递一个回调函数给另一个函数时,我们只传递了这个函数的定义,并没有在参数中执行它。 当包含(调用)函数拥有了在参数中定义的回调函数后,它可以在任何时候调用(也就是回调)它。...当作为参数传递一个回调函数给另一个函数时,回调函数将在包含函数函数体内的某个位置被执行,就像回调函数在包含函数的函数体内定义一样。...//定义主函数,回调函数作为参数 function A(callback) { callback(); console.log('我是主函数'); } //定义回调函数 function B()...array.filter(function(currentValue,index,arr), thisValue) filter 接收一个函数作为参数,所以它也符合高阶函数中的第一个定义,作为参数被传递
何为高阶函数?一个函数就可以接收另一个函数作为参数或者返回值为一个函数,这种函数就称之为高阶函数。 数组中的高阶函数如下: 1. map 遍历 1. 对原来的数组没有影响; 2....创建一个新数组,其结果是该数组中的每个元素都调用提供的函数后返回的结果; 3. 接收两个参数,一个是回调函数,一个是回调函数的this值(可选)。...其中,回调函数被默认传入三个值,依次为当前元素、当前索引、整个数组。...接收两个参数,一个为回调函数,另一个为初始值。回调函数中四个默认参数,依次为积累值、当前值、当前索引和整个数组。...接收一个函数作为参数,这个函数有一个默认参数,就是当前元素。这个作为参数的函数返回值为一个布尔类型,决定当前元素是否保留; 2. 返回值为一个新的数组,这个数组里面包含参数里面所有被保留的项。
什么是高阶函数 高阶函数是对其他函数进行操作的函数,可以将它们作为参数或通过返回它们。简单来说,高阶函数是一个函数,它接收函数作为参数或将函数作为输出返回。...示例 Array.prototype.map 该map()方法通过调用作为输入数组中每个元素的参数提供的回调函数来创建一个新数组。...该map()方法将从回调函数中获取每个返回值,并使用这些值创建一个新数组。传递给回调函数map()方法接受3个参数:element,index,和array。...(item) { return item * 2; } console.log(arr2) 结论: 高阶函数是一个函数,它可以接收函数作为参数,甚至可以返回一个函数。...高阶函数就像常规函数一样,具有接收和返回其他函数的附加能力,即参数和输出。
onFulfilledCallbacks:用于存储成功回调函数的数组。onRejectedCallbacks:用于存储失败回调函数的数组。...构造函数(constructor)中接受一个executor函数作为参数,该函数接受两个参数:resolve和reject。...如果是,那么将状态改为REJECTED并将错误原因赋给reason属性,并依次调用失败回调数组中的回调函数。在构造函数的末尾,通过try-catch语句执行executor函数。...它接受一个参数onRejected,表示失败的回调函数,然后调用then方法,并将onRejected作为第二个参数传入。...race方法接受一个promise数组作为参数,返回一个新的MyPromise实例。
forEach()函数 forEach()函数是JavaScript数组提供的一个用于遍历数组的方法。它接受一个回调函数作为参数,并且对数组中的每个元素依次调用该回调函数。...map()函数接受一个回调函数作为参数,回调函数可以接受三个参数:当前元素的值、当前元素的索引和数组本身。回调函数对每个元素执行操作,并将返回的值添加到新数组中。...该方法不会改变原始数组,而是根据条件创建一个新的数组。 filter()函数接受一个回调函数作为参数,回调函数用于定义筛选条件。回调函数可以接受三个参数:当前元素、当前索引和原始数组。...它接收一个回调函数作为参数,并且可以传递一个初始值。...callback:回调函数,接收三个参数: element:当前正在被处理的数组元素。 index(可选):当前正在被处理的元素的索引。 array(可选):调用find()函数的数组。
高阶函数是对其他函数进行操作的函数,可以将它们作为参数或返回它们。 简单来说,高阶函数是一个函数,它接收函数作为参数或将函数作为输出返回。...map()不会对空数组进行检测。 map()不会改变原始数组。 传递给 map() 方法的回调函数接受 3 个参数:currentValue,index 和 array。...,并将元素传递给回调函数。...reduce()对于空数组是不会执行回调函数的。 reduce 方法接收两个参数 回调函数 一个可选的 initialValue (初始值)。...传递给 reduce() 方法的回调函数接受 4 个参数:prev, current, currentIndex, arr。 prev:必须。函数传进来的初始值或上一次回调的返回值。
020: JS数组的高阶函数——基础篇 1.什么是高阶函数 概念非常简单,如下: 一个函数就可以接收另一个函数作为参数或者返回值为一个函数, 这种函数就称之为高阶函数。 那对应到数组中有哪些方法呢?...2.数组中的高阶函数 1.map 参数:接受两个参数,一个是回调函数,一个是回调函数的this值(可选)。 其中,回调函数被默认传入三个值,依次为当前元素、当前索引、整个数组。...2. reduce 参数: 接收两个参数,一个为回调函数,另一个为初始值。回调函数中三个默认参数,依次为积累值、当前值、整个数组。...3. filter 参数: 一个函数参数。这个函数接受一个默认参数,就是当前元素。这个作为参数的函数返回值为一个布尔类型,决定元素是否保留。...filter方法返回值为一个新的数组,这个数组里面包含参数里面所有被保留的项。
也会将数据从应用程序提交到服务器以接收某种响应。有几种方法可以将此数据发送/获取到 API 或服务器,可以使用内置的 API 或外部 npm 包来实现。...fetch() 方法接受一个必需参数,即要获取的资源的路径,返回一个 Promise,解析该请求的响应。...Memoization 函数通常更快,因为如果使用相同的参数再次调用函数,则不会重新执行函数,而是从缓存中获取结果。...只需传入一个函数和一个依赖数组,useMemo 将仅在依赖中的一个值发生变化时重新计算记忆化的值 import React, { useMemo } from "react"; function App...useCallback,允许您对耗费性能的函数进行记忆化,以避免在每次重新渲染时调用它们 只需传入一个函数和一个依赖数组,useCallback 将仅在依赖中的一个值发生变化时重新计算记忆化的函数 import
reduce() 方法接收一个函数作为累加器(accumulator),数组中的每个值(从左到右)开始合并,最终为一个值。 概念:对数组中的所有元素调用指定的回调函数。...该回调函数的返回值为累积结果,并且此返回值在下一次调用该回调函数时作为参数提供。...第一次调用 callbackfn 函数会将此值作为参数而非数组值提供。 返回值 通过最后一次调用回调函数获得的累积结果。...回调函数的返回值在下一次调用回调函数时作为 previousValue 参数提供。最后一次调用回调函数获得的返回值为 reduce 方法的返回值。 不为数组中缺少的元素调用该回调函数。...下表列出了回调函数参数。 回调参数 定义 previousValue 通过上一次调用回调函数获得的值。
call_user_func() 说明:把第一个参数作为回调函数调用,第一个参数 callback 是被调用的回调函数,其余参数是回调函数的参数。...call_user_func_array() 说明:把第一个参数作为回调函数(callback)调用,把参数数组作(param_arr)为回调函数的的参数传入。...func_get_args() 说明:获取函数参数列表的数组。...func_num_args() 说明:该功能可以配合使用func_get_arg()和func_get_args()允许用户自定义函数接收可变长度参数列表。...返回值是返回当前用户定义的 传入函数的参数的数量。
n indexOf() ES5 查询并返回数据的索引 n lastIndexOf() ES5 反向查询并返回数据的索引 n forEach() ES5 参数为回调函数,会遍历数组所有的项,回调函数接受三个参数...forEach接收的回调函数会根据数组的每一项执行,该回调函数默认有三个参数,分别为:遍历到的数组的数据,对应的索引,数组自身。...参数:every()接收一个回调函数作为参数,这个回调函数需要有返回值,every(callback);callback默认有三个参数,分别为value,index,self。...参数:some()接收一个回调函数作为参数,这个回调函数需要有返回值,some(callback);callback默认有三个参数,分别为value,index,self。...参数:reduce()接收一个或两个参数:第一个是回调函数,表示在数组的每一项上调用的函数;第二个参数(可选的)作为归并的初始值,被回调函数第一次执行时的第一个参数接收。
reject(error); } } // then 方法接收两个回调函数,一个是成功的回调,一个是失败的回调 then (onFulfilled...,可以链式调用,当前的返回值可以作为下一个 then 的接收值,而且 promsie 主要是为了解决异步回调问题。...在 Promise 中,上一次 then 方法返回的值会作为下一次 then 方法的回调中的参数。...then 方法返回的值有三种: 在成功回调或者失败回调中抛出异常,会走到下一次 then 的失败回调里; 成功或失败返回的是还是一个 promise,那么会用这个 (返回的)promise 的状态作为结果...重写 then 方法 代码如下: then (onFulfilled, onRejected) { // 两个参数必须是回调函数,不是函数时替换成函数 // 这样可以实现这种效果:promise.then
领取专属 10元无门槛券
手把手带您无忧上云