Redux基本使用(2)
Redux基础使用:http://www.intewl.com/detail/82.html
首先在src创建对应store的目录,一般react脚手架搭建的项目只能导入scr里面的内容,如果导入src外的文件会报错,官方限制
Module not found: You attempted to import ****** which falls outside of the project src/ directory. Relative imports outside of src/ are not supported. You can either move it inside src/, or add a symlink to it from project's node_modules/.
如果需要解决导入src外的文件可以利用以下方法解决,但是建议不处理,直接将对应需要导入的资源放到src目录下
解决方法:1,项目直接eject命令,如果之前执行过了产生了webpack等文件就不用再执行。
2,将webpack.config.dev中ModuleScopePlugin命令注释掉即可。
目录结果如下
|——src |————stroe |——————action |————————count.js//对应count的action内容(代码一) |————————index.js//将所有action合并导出,如果单独导出某个文件此处可以不处理(代码二) |——————reducers |————————count.js//对应count的reducers内容(代码三) |————————index.js//将所有reducers放在一起(代码四)
代码一:count的action代码
在前面调用action事使用
this.props.dispatch({type:'ADD',data:1})
这种代码不便于维护可以吧dispatch里的内容放在单独文件里面方便以后调用
export function add() {//单独导出用解构赋值方便调用 return {type:'ADD',data:1} } export function reduce() {//单独导出用解构赋值方便调用 return {type:'REDUCE',data:1} }
调用页面首先需要导入action里的count
import {add} from '../store/action/count' //调用方式 this.props.dispatch(add(1))代码二:如果想将action合并成一个模块导出可以将其他的页面在index中导入最终全部导出
import * as counter from './counter'; import * as user from './user'; export default { counter, user }如果已经将全部action合并了,使用的方式有区别
import index from '../store/action/index' //调用方式 this.props.dispatch(index.count.add(1))
代码三:将前面用到 的reducer内容放到一个文件中
function counterReducer(state={count:0},action){ console.log(action) switch (action.type) { case "ADD": state.count+=parseInt(action.data) return {...state,...action.data} default: return state; } } export default counterReducer;代码四:因为项目一般会有多个reducer,所以最终把需要用到的reducer进行合并
import {createStore,combineReducers} from 'redux'; import counterReducer from './counter'; import userReducer from './user'; //3、存入仓库 let store=createStore(combineReducers({ counter:counterReducer, user:userReducer }));; export default store;//在index.js直接使用代码模块化后需要调整下index.js
import React from 'react'; import ReactDOM from 'react-dom'; import {Provider} from "react-redux" import store from "./store/reducers/index.js" ReactDOM.render( <Provider store={store}> <React.StrictMode> <App /> </React.StrictMode> </Provider> , document.getElementById('root') );
215浏览量 · 0评论 · 2020-04-23 04:00:45
热门专题
-
01
前端 / HTML超文本标记语言,标准通用标记语言下的一个应用。 “超文本”就是指页面内可以包含图片、链接,甚至音乐、程序等非文字元素。 超文本标记语言的结构包括“头”部分
13 篇文章
-
02
前端 / JS/JQjQuery是一个快速、简洁的JavaScript框架,是继Prototype之后又一个优秀的JavaScript代码库(或JavaScript框架)。
31 篇文章
-
03
前端 / CSS层叠样式表(英文全称:Cascading Style Sheets)是一种用来表现HTML(标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集)等文件样式的计算机语言。
15 篇文章
-
04
前端 / VUE Vue是一套构建用户界面的渐进式框架。 Vue只关注视图层,采用自底向上增量开发的设计。
41 篇文章
-
05
设计 / PhotoshopPhotoshop主要处理以像素所构成的数字图像。使用其众多的编修与绘图工具,可以有效地进行图片编辑工作。
0 篇文章
-
06
后端 / PHPPHP,一个嵌套的缩写名称,是英文超级文本预处理语言(PHP:Hypertext Preprocessor)的缩写。PHP 是一种 HTML 内嵌式的语言
0 篇文章
-
07
设计 / aihtml是超文本标记语言
0 篇文章
-
08
后端 / ThinkPhpThinkPHP是为了简化企业级应用开发和敏捷WEB应用开发而诞生的。遵循Apache2开源协议发布。简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。
5 篇文章
-
09
前端 / 微信小程序微信小程序,简称小程序,是一种不需要下载安装即可使用的应用,它实现了应用“触手可及”的梦想,用户扫一扫或搜一下即可打开应用。
3 篇文章
-
10
办公 / WordWord 提供了许多易于使用的文档创建工具,同时也提供了丰富的功能集供创建复杂的文档使用。
2 篇文章
全部评论 0