react难点掌握

  • Post author:
  • Post category:其他




react难点—逆战



一:模块划分

为了能解决命名冲突问题,同时模块功能更加清晰,个人认为需要掌握react中模块划分这一知识点



第一步:建立模块组件自身的reducer.js

和之前的reducer.js写法一致

//1)初始化state
var initState={
key:value
}
//2)创建reducer,并且给state初始化值
var reducer=(state=initState,action)=>{
//3)根据action的类型type做不同的逻辑代码
...
//4)返回state
return state
}
//5)导出
export default reducer;



第二步:在store文件夹下的reducer.js里,结合所有组件的reducer,并且划分模块名



1)需要导入combineReducers()辅助函数
import {combineReducers} from 'redux'

combineReducers 辅助函数的作用是,把一个由多个不同 reducer 函数作为 value 的 object,合并成一个最终的 reducer 函数,然后就可以对这个 reducer 调用 createStore。



2)导入其他组件的reducer.js

将其他组件的reducer.js引入,并且命名唯一!

例:

import aReducer from '路径'
import bReducer from '路径'


3)使用combineReducers()辅助函数结合起来
var reducer=combineReducers({
模块的名字:引入的模块reducer
a:aReducer,
b:bReducer
...
})


4)最后记得导出reducer
export default reducer



第三步:取模块里面的值

模块名.key就行啦,记得加模块名哦



二.react使用redux后的异步操作

在actionCreator里面

插件:redux-thunk

//但不是唯一解决异步的方式,原理简单,但是项目大了就比较乱

//还有就是redux-saga



1.安装redux-thunk

yarn add redux-thunk



2.引入applyMiddleware中间件

在store里的index.js

import {applyMiddleware} from ‘redux’



3.引入redux-thunk

在store里的index.js

import thunk from ‘redux-thunk’



4.使用中间件

var store =creatorStore(reducer,applyMiddleware(thunk))



5.在actionCreator里面发起异步async请求

写异步方法,返回回调函数,参数是dispatch(中间件传递过来的)

asyncAction(){
return (dispatch)=>{
发出异步请求,成功后在异步动作回调里,用dispatch发出动作给reducer
}
}

还有更多需要掌握的知识点,日后再更



版权声明:本文为kaluliluary原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。