-
为什么要引入React JSX
所属栏目:[教程] 日期:2023-04-10 热度:8327
为什么要引入-jsx-这种语法?传统的 MVC 是将模板放在其他地方,比如 <script> 标签或者模板文件,再在 JS 中通过某种手段引用模板。按照这种思路,想想多少次我们面对四处分散的模板片段不知所措?纠结模板引擎,纠[详细]
-
React CDN链接介绍
所属栏目:[教程] 日期:2023-04-10 热度:3150
可以通过 CDN 获得 React 和 ReactDOM 的 UMD 版本。
<script crossorigin src="https://unpkg.com/react@16/umd/react.development.js"></script>
<script crossorigin src="https://unpkg.com/react-dom@16/um[详细] -
如何在网站中添加 React
所属栏目:[教程] 日期:2023-04-10 热度:9101
React 从一开始就被设计为逐步采用,并且你可以根据需要选择性地使用 React。可能你只想在现有页面中“局部地添加交互性”。使用 React 组件是一种不错的方式。
大多数网站不是、也不需要是单页应用程序[详细] -
React教程
所属栏目:[教程] 日期:2023-04-07 热度:9931
由于 React的设计思想极其独特,属于革命性创新,性能出众,代码逻辑却非常简单。所以,越来越多的人开始关注和使用,认为它可能是将来 Web 开发的主流工具。
这个项目本身也越滚越大,从最早的UI引擎变成了一整套[详细] -
CombineReducers 用法介绍
所属栏目:[教程] 日期:2023-04-07 热度:4206
基于 Redux 的应用程序中最常见的 state 结构是一个简单的 JavaScript 对象,它最外层的每个 key 中拥有特定域的数据。类似地,给这种 state 结构写 reducer 的方式是分拆成多个 reducer,拆分之后的 reducer 都是相[详细]
-
什么是初始化 State
所属栏目:[教程] 日期:2023-04-07 热度:3358
如果没有使用 combineReducers() 或者类似功能的代码,preloadedState 优先级会比在 reducer 里面使用 state = ... 高 ,这是因为 preloadedState 会做为 state 传递到 reducer 中,state 的值不再是 undefined ,ES[详细]
-
Redux 不可变更新模式解析
所属栏目:[教程] 日期:2023-04-07 热度:8818
在 redux 基本概念的不可变数据管理 中给出一些示例,演示了不可变的基本更新操作,例如,更新一个对象中一个字段,或者,在数组的末尾增加一个数据。然而,reducer 经常需要综合使用这些基本操作去处理更加复杂的任[详细]
-
State 范式化介绍
所属栏目:[教程] 日期:2023-04-07 热度:7724
当数据在多处冗余后,需要更新时,很难保证所有的数据都进行更新。
嵌套的数据意味着 reducer 逻辑嵌套更多、复杂度更高。尤其是在打算更新深层嵌套数据时。
不可变的数据在更新时需要状态树的祖先数据进行复制[详细] -
Redux 代码分割分析
所属栏目:[教程] 日期:2023-04-07 热度:6659
在大型 Web 应用程序中,通常需要将应用程序代码拆分为多个可以按需加载的 JS 包。 这种称为“代码分割”的策略通过减小初次加载时的 JS 的包的大小,来提高应用程序的性能。
要使用 Redux 进行代码拆分[详细] -
Redux 实现撤销历史运用
所属栏目:[教程] 日期:2023-04-07 热度:7694
在应用中构建撤销和重做功能往往需要开发者刻意地付出一些精力。对于经典的 MVC 框架来说,这不是一个简单的问题,因为你需要克隆所有相关的 model 来追踪每一个历史状态。
此外,你需要考虑整个撤销堆栈,因为用[详细] -
Redux 子应用隔离介绍
所属栏目:[教程] 日期:2023-04-07 热度:4048
考虑一下这样的场景:有一个大应用(对应 <BigApp> 组件)包含了很多小的“子应用”(对应 SubApp 组件):
import React, { Component } from 'react'
import SubApp from './subapp'[详细] -
什么是组织 Reducer
所属栏目:[教程] 日期:2023-04-07 热度:2721
作为核心概念, Redux 真的是一种十分简单的设计模式:所有你“写”的逻辑都集中在一个单独的函数中,并且执行这些逻辑的唯一方式就是传给 Redux 一个能够描述当时情景的普通对象(plain object)。Redux [详细]
-
Reducer 逻辑拆分教程
所属栏目:[教程] 日期:2023-04-07 热度:2996
对于任何一个有意义的应用来说,将所有的更新逻辑都放入到单个 reducer 函数中都将会让程序变得不可维护。虽然说对于一个函数应该有多长没有准确的规定,但一般来讲,函数应该比较短,并且只做一件特定的事。因此,把[详细]
-
什么是Reducer 重构
所属栏目:[教程] 日期:2023-04-07 热度:5380
使用函数分解(Functional Decomposition)和 Reducer 组合(Reducer Composition)重构 Reducer
看看不同类型的 sub-reducer 和如何把他们组合在一起的例子是很有用的。现在让我们看看如何将一个大型的单个 redu[详细] -
Reducer 逻辑复用定义
所属栏目:[教程] 日期:2023-04-07 热度:2584
随着应用程序的增长,在 reducer 逻辑中开始出现一些常见的模式。你可能会发现一部分 reducer 逻辑对于不同类型的数据做着相同的工作,你想通过对每种数据类型复用相同的公共逻辑来减少重复的代码。或者,你可能想要[详细]
-
Reducer和State的基本结构介绍
所属栏目:[教程] 日期:2023-04-07 热度:5048
首先必须明确的是,整个应用只有一个单一的 reducer 函数:这个函数是传给 createStore 的第一个参数。一个单一的 reducer 最终需要做以下几件事:
reducer 第一次被调用的时候,state 的值是 undefined。reducer[详细] -
Reudx 计算衍生数据分析
所属栏目:[教程] 日期:2023-04-07 热度:7430
Reselect 库可以创建可记忆的(Memoized)、可组合的 selector 函数。Reselect selectors 可以用来高效地计算 Redux store 里的衍生数据。
可记忆的 Selectors 初衷
首先访问 Todos 列表示例:
containers/Visib[详细] -
怎样进行Reudx 编写测试
所属栏目:[教程] 日期:2023-04-07 热度:8676
由于你写的大部分 Redux 代码是函数,而且其中大部分是纯函数,所以很好测,不需要模拟。
准备工作
我们推荐使用 Jest 作为测试引擎,需要注意的是 Jest 运行在 Node 环境中,因此你不能访问 DOM。
npm insta[详细] -
Reudx 服务端渲染方法
所属栏目:[教程] 日期:2023-04-07 热度:552
服务端渲染一个很常见的场景是当用户(或搜索引擎爬虫)第一次请求页面时,用它来做初始渲染。当服务器接收到请求后,它把需要的组件渲染成 HTML 字符串,然后把它返回给客户端(这里统指浏览器)。之后,客户端会接[详细]
-
什么是Reudx 缩减样板代码
所属栏目:[教程] 日期:2023-04-07 热度:1396
Redux 很大部分受到 Flux 的启发,而最常见的关于 Flux 的抱怨是必须写一大堆的样板代码。在这章中,我们将考虑 Redux 如何根据个人风格,团队偏好,长期可维护性等自由决定代码的繁复程度。
Actions
Actions 是[详细] -
如何使用对象展开运算符
所属栏目:[教程] 日期:2023-04-07 热度:4735
因为不直接修改 state 是 Redux 的核心理念之一, 所以你会发现自己总是在使用 Object.assign() 创建对象拷贝, 而拷贝中会包含新创建或更新过的属性值。
在下面的 todoApp 示例中, object.assign() 将会返回一个新[详细] -
搭配 TypeScript运用
所属栏目:[教程] 日期:2023-04-07 热度:2961
TypeScript 是 JavaScript 类型的超集。由于其带来的好处,它最近在应用中变得流行。如果您尚未使用过 TypeScript,强烈建议您在继续阅读之前先熟悉它。 您可以查看其文档。
TypeScript 可以为 Redux 应用程序带来[详细] -
Redux 搭配 React Router运用
所属栏目:[教程] 日期:2023-04-07 热度:5421
现在你想在你的 Redux 应用中使用路由功能,可以搭配使用 React Router 来实现。 Redux 和 React Router 将分别成为你数据和 URL 的事实来源(the source of truth)。 在大多数情况下, 最好 将他们分开,除非你需要[详细]
-
如何迁移到 Redux
所属栏目:[教程] 日期:2023-04-07 热度:2943
Redux 不是一个单一的框架,而是一系列的约定和一些让他们协同工作的函数。你的 Redux 项目的主体代码甚至不需要使用 Redux 的 API,大部分时间你其实是在编写函数。
这让到 Redux 的双向迁移都非常的容易。我们可[详细] -
Redux Reducer解析
所属栏目:[教程] 日期:2023-04-07 热度:6087
Reducers 指定了应用状态的变化如何响应 actions 并发送到 store 的,记住 actions 只是描述了有事情发生了这一事实,并没有描述应用如何更新 state。
设计 State 结构
在 Redux 应用中,所有的 state 都被保存在[详细]