在使用react-redux中碰到的问题

redux的reducers中碰到的修改数组的问题

  • 在reducers中我有一个函数,它是拿到数据,然后把数据添加到数组中,我之前的想法就是说通过
    newsList.unshift(action.data) return newsList这句代码实现数据的添加,但是现在是存在错误的
  • 因为在redux中的reducers是一个纯函数,它不会改变原有的数据,它只是返回一个新的数据,对于上面的数据,我们即使使用unshift之后,那么数据还是旧的。因为在redux中定义的是,我们返回的是一个数据地址,因为我们的数组即使数据添加进去了 但是返回的还是一个旧的数组,那么页面是不会重修渲染的,我们页面根本不会刷新显示新的数据
  • 后面的话我用map函数把旧的数据处理了一下,返回了一个新的数组,就可以在数据改变后动态渲染数据了,也可以用数组的扩展运算符return [action.data,...state]

使用redux-thunk模拟ajax进行数据请求

使用redux-thunk获取模拟json数据的demo链接

  • 首先在使用异步操作的时候,我们在actions.js中创建一个异步函数,但是这个异步函数需要配有一个同步操作,这个异步操作不需要在action-types声明类型,但是与之对应的同步函数应该有action-types的类型说明
  • 然后我们在reducers中,通过switch里面的case属性来做操作
	export const additem = (data)=>({type:ADDITEM,data:data})  //这是下面异步操作中对应的同步操作
	export const addnewslist = (data)=>{   //这个是真正的异步操作
	    return dispatch=>{
	        //异步的代码
	        fetch(data)
	        .then(function(response) {
	          return response.json();
	        })  //这一步得到一个promise
	        .then((res)=>{
	            const data=res;
	            for (const item in data) {
	                const name = data[item].name 
	                const content = data[item].content 
	             dispatch(
	                additem({name,content})
	                )
	            }
	        }).catch((error)=>{
	            console.log(error);
	        });
	    }
	}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值