React使用过程中零碎小结

本文详细探讨了React中setState的异步与同步调用场景,阐述了路由配置及参数传递方式,深入分析了Redux状态管理流程,包括action、reducer的使用及与React组件的连接方法。

//////////////////////////
// this.setState //
/////////////////////////
异步:
1. react 本身的事件
2. 在 生命周期里 setState 都是异步的
同步:
1. 自己注册的事件
2. setTimetou setTimeInteval
3. axios或请求回调里

//////////////
// 路由 //
//////////////

  • 文件拆出 所有路由拆出一个文件

  • Switch组件,确保路由只匹配一个页面

  • 路由传参 query 和 动态路由
    query 直接拼接 使用location.search获取,获取可以直接qs.parse()解析

    动态路由 路由后设置动态变量 使用 this.props.match.params.动态变量 获取

/////////////////////////////////
/// redux状态管理 ////
////////////////////////////////

  • 流程 view->action->reduce->渲染 (只有一个store,单一数据源)

  • redux 与 react-redux
    redux(状态管理) – react-redux(react版本状态管理)

  • 使用流程:

{ createStore (创建store) , combineReducers (合并reducer) } from redux
{ Provider } from react-redux

cons defaultState = { } 	//state默认值
function getList( state = defaultState , action ){
// reducer 处理数据逻辑
	switch ( action.type ) {
		case '处理逻辑名':	//case值唯一,匹配时会在全局所有的reducer查找
			return { ...state( 用于备份state,防止冲突 ) , name: action.payload };
		default :
			break ;
	}
}

var myReducers = combineReducers ({ getList })

const action = {	//action 选择要操作的逻辑,与reducer匹配
	type: '要操作的逻辑名',
	payload: '转递的参数'	//多用于交互传参
}

var store = createStore ( myReducers )

<Provider store = { store }>
	包裹项目
</Provider>
  • 组件部分使用redux
import { connect } from 'react-redux'
import { xxx } from '/action/xxx'
// React 17之前 
connect( 
   state => { value: state.reducer( .value ) },
   { xxx (引入的action) }
)( 组件 )
// React 17之后
@connect( state =>({
   	value: state.reducer( .value )
   }), {
   	xxx ( 引入的action)
   }
) 组件
  • redux-promise 插件
    使action中,可以直接使用axios请求,并直接返回请求到的数据
const action = {
	type: '选择要操作的逻辑',
	payload: axios.get( url )
}
//相当于在action中,直接取到 `axios.get(url).then(res => {}) 中的res
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值