Redux的工作原理是怎样的,能否详细解释一下?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1686个文字,预计阅读时间需要7分钟。
目录
一、什么是
二、工作原理
三、如何使用
四、小结
一、什么是
React 是一个用于构建用户界面的JavaScript库,主要用于构建单页应用。它帮助开发者解决渲染DOM的过程,并在整个应用中管理多个组件,每个组件都有自己的state。二、工作原理React 通过虚拟DOM(Virtual DOM)来提高性能。它将实际的DOM元素映射到虚拟DOM,只有当虚拟DOM与实际DOM不一致时,才会进行DOM的更新。这使得React能够高效地处理DOM操作,尤其是在大型应用中。
三、如何使用
1.创建React组件
2.使用JSX语法编写UI
3.将组件挂载到DOM上
4.管理组件的state和props
四、小结
React 通过组件化的方式构建应用,使得代码更加模块化、可维护。每个组件都有自己的state,可以独立管理。目录
- 一、是什么
- 二、工作原理
- 三、如何使用
- 小结
一、是什么
React是用于构建用户界面的,帮助我们解决渲染DOM的过程
而在整个应用中会存在很多个组件,每个组件的state是由自身进行管理,包括组件定义自身的state、组件之间的通信通过props传递、使用Context实现数据共享
如果让每个组件都存储自身相关的状态,理论上来讲不会影响应用的运行,但在开发及后续维护阶段,我们将花费大量精力去查询状态的变化过程
这种情况下,如果将所有的状态进行集中管理,当需要更新状态的时候,仅需要对这个管理集中处理,而不用去关心状态是如何分发到每一个组件内部的
redux就是一个实现上述集中管理的容器,遵循三大基本原则:
- 单一数据源
- state 是只读的
- 使用纯函数来执行修改
注意的是,redux并不是只应用在react中,还与其他界面库一起使用,如Vue
二、工作原理
redux要求我们把数据都放在store公共存储空间
一个组件改变了store里的数据内容,其他组件就能感知到store的变化,再来取数据,从而间接的实现了这些数据传递的功能
工作流程图如下所示:
根据流程图,可以想象,React Components是借书的用户,Action Creactor是借书时说的话(借什么书),Store是图书馆管理员,Reducer是记录本(借什么书,还什么书,在哪儿,需要查一下),state是书籍信息
整个流程就是借书的用户需要先存在,然后需要借书,需要一句话来描述借什么书,图书馆管理员听到后需要查一下记录本,了解图书的位置,最后图书馆管理员会把这本书给到这个借书人
转换为代码是,React Components需要获取一些数据, 然后它就告知Store需要获取数据,这就是就是Action Creactor,Store接收到之后去Reducer查一下,Reducer会告诉Store应该给这个组件什么数据
三、如何使用
创建一个store的公共数据区域
import { createStore } from 'redux' // 引入一个第三方的方法 const store = createStore() // 创建数据的公共存储区域(管理员)
还需要创建一个记录本去辅助管理数据,也就是reduecer,本质就是一个函数,接收两个参数state,action,返回state
// 设置默认值 const initialState = { counter: 0 } const reducer = (state = initialState, action) => { }
然后就可以将记录本传递给store,两者建立连接。
如下:
const store = createStore(reducer)
如果想要获取store里面的数据,则通过store.getState()来获取当前state
console.log(store.getState());
下面再看看如何更改store里面数据,是通过dispatch来派发action,通常action中都会有type属性,也可以携带其他的数据
store.dispatch({ type: "INCREMENT" }) store.dispath({ type: "DECREMENT" }) store.dispatch({ type: "ADD_NUMBER", number: 5 })
下面再来看看修改reducer中的处理逻辑:
const reducer = (state = initialState, action) => { switch (action.type) { case "INCREMENT": return {...state, counter: state.counter + 1}; case "DECREMENT": return {...state, counter: state.counter - 1}; case "ADD_NUMBER": return {...state, counter: state.counter + action.number} default: return state; } }
注意,reducer是一个纯函数,不需要直接修改state
这样派发action之后,既可以通过store.subscribe监听store的变化,如下:
store.subscribe(() => { console.log(store.getState()); })
在React项目中,会搭配react-redux进行使用
完整代码如下:
const redux = require('redux'); const initialState = { counter: 0 } // 创建reducer const reducer = (state = initialState, action) => { switch (action.type) { case "INCREMENT": return {...state, counter: state.counter + 1}; case "DECREMENT": return {...state, counter: state.counter - 1}; case "ADD_NUMBER": return {...state, counter: state.counter + action.number} default: return state; } } // 根据reducer创建store const store = redux.createStore(reducer); store.subscribe(() => { console.log(store.getState()); }) // 修改store中的state store.dispatch({ type: "INCREMENT" }) // console.log(store.getState()); store.dispatch({ type: "DECREMENT" }) // console.log(store.getState()); store.dispatch({ type: "ADD_NUMBER", number: 5 }) // console.log(store.getState());
小结
- createStore可以帮助创建 store
- store.dispatch 帮助派发 action , action 会传递给 store
- store.getState 这个方法可以帮助获取 store 里边所有的数据内容
- store.subscrible 方法订阅 store 的改变,只要 store 发生改变, store.subscrible 这个函数接收的这个回调函数就会被执行
到此这篇关于一文理解Redux及其工作原理的文章就介绍到这了,更多相关 Redux 工作原理内容请搜索易盾网络以前的文章或继续浏览下面的相关文章希望大家以后多多支持易盾网络!
本文共计1686个文字,预计阅读时间需要7分钟。
目录
一、什么是
二、工作原理
三、如何使用
四、小结
一、什么是
React 是一个用于构建用户界面的JavaScript库,主要用于构建单页应用。它帮助开发者解决渲染DOM的过程,并在整个应用中管理多个组件,每个组件都有自己的state。二、工作原理React 通过虚拟DOM(Virtual DOM)来提高性能。它将实际的DOM元素映射到虚拟DOM,只有当虚拟DOM与实际DOM不一致时,才会进行DOM的更新。这使得React能够高效地处理DOM操作,尤其是在大型应用中。
三、如何使用
1.创建React组件
2.使用JSX语法编写UI
3.将组件挂载到DOM上
4.管理组件的state和props
四、小结
React 通过组件化的方式构建应用,使得代码更加模块化、可维护。每个组件都有自己的state,可以独立管理。目录
- 一、是什么
- 二、工作原理
- 三、如何使用
- 小结
一、是什么
React是用于构建用户界面的,帮助我们解决渲染DOM的过程
而在整个应用中会存在很多个组件,每个组件的state是由自身进行管理,包括组件定义自身的state、组件之间的通信通过props传递、使用Context实现数据共享
如果让每个组件都存储自身相关的状态,理论上来讲不会影响应用的运行,但在开发及后续维护阶段,我们将花费大量精力去查询状态的变化过程
这种情况下,如果将所有的状态进行集中管理,当需要更新状态的时候,仅需要对这个管理集中处理,而不用去关心状态是如何分发到每一个组件内部的
redux就是一个实现上述集中管理的容器,遵循三大基本原则:
- 单一数据源
- state 是只读的
- 使用纯函数来执行修改
注意的是,redux并不是只应用在react中,还与其他界面库一起使用,如Vue
二、工作原理
redux要求我们把数据都放在store公共存储空间
一个组件改变了store里的数据内容,其他组件就能感知到store的变化,再来取数据,从而间接的实现了这些数据传递的功能
工作流程图如下所示:
根据流程图,可以想象,React Components是借书的用户,Action Creactor是借书时说的话(借什么书),Store是图书馆管理员,Reducer是记录本(借什么书,还什么书,在哪儿,需要查一下),state是书籍信息
整个流程就是借书的用户需要先存在,然后需要借书,需要一句话来描述借什么书,图书馆管理员听到后需要查一下记录本,了解图书的位置,最后图书馆管理员会把这本书给到这个借书人
转换为代码是,React Components需要获取一些数据, 然后它就告知Store需要获取数据,这就是就是Action Creactor,Store接收到之后去Reducer查一下,Reducer会告诉Store应该给这个组件什么数据
三、如何使用
创建一个store的公共数据区域
import { createStore } from 'redux' // 引入一个第三方的方法 const store = createStore() // 创建数据的公共存储区域(管理员)
还需要创建一个记录本去辅助管理数据,也就是reduecer,本质就是一个函数,接收两个参数state,action,返回state
// 设置默认值 const initialState = { counter: 0 } const reducer = (state = initialState, action) => { }
然后就可以将记录本传递给store,两者建立连接。
如下:
const store = createStore(reducer)
如果想要获取store里面的数据,则通过store.getState()来获取当前state
console.log(store.getState());
下面再看看如何更改store里面数据,是通过dispatch来派发action,通常action中都会有type属性,也可以携带其他的数据
store.dispatch({ type: "INCREMENT" }) store.dispath({ type: "DECREMENT" }) store.dispatch({ type: "ADD_NUMBER", number: 5 })
下面再来看看修改reducer中的处理逻辑:
const reducer = (state = initialState, action) => { switch (action.type) { case "INCREMENT": return {...state, counter: state.counter + 1}; case "DECREMENT": return {...state, counter: state.counter - 1}; case "ADD_NUMBER": return {...state, counter: state.counter + action.number} default: return state; } }
注意,reducer是一个纯函数,不需要直接修改state
这样派发action之后,既可以通过store.subscribe监听store的变化,如下:
store.subscribe(() => { console.log(store.getState()); })
在React项目中,会搭配react-redux进行使用
完整代码如下:
const redux = require('redux'); const initialState = { counter: 0 } // 创建reducer const reducer = (state = initialState, action) => { switch (action.type) { case "INCREMENT": return {...state, counter: state.counter + 1}; case "DECREMENT": return {...state, counter: state.counter - 1}; case "ADD_NUMBER": return {...state, counter: state.counter + action.number} default: return state; } } // 根据reducer创建store const store = redux.createStore(reducer); store.subscribe(() => { console.log(store.getState()); }) // 修改store中的state store.dispatch({ type: "INCREMENT" }) // console.log(store.getState()); store.dispatch({ type: "DECREMENT" }) // console.log(store.getState()); store.dispatch({ type: "ADD_NUMBER", number: 5 }) // console.log(store.getState());
小结
- createStore可以帮助创建 store
- store.dispatch 帮助派发 action , action 会传递给 store
- store.getState 这个方法可以帮助获取 store 里边所有的数据内容
- store.subscrible 方法订阅 store 的改变,只要 store 发生改变, store.subscrible 这个函数接收的这个回调函数就会被执行
到此这篇关于一文理解Redux及其工作原理的文章就介绍到这了,更多相关 Redux 工作原理内容请搜索易盾网络以前的文章或继续浏览下面的相关文章希望大家以后多多支持易盾网络!

