mapstatetoprops更新state但props不更新渲染的问题

通过react-redux和redux实现react组件之间的通信,reducer、action、store都编写正确,mapDispatchToProps也能正确传值.唯独mapStateToProps的return出现了问题

reduce

action

connect绑定

 

 组件渲染

本来的需求是登陆成功组件获得新的props,随之更新img和div内容,但是却发现在mapstatetoprops函数中,state确实能够实时更新,但props却只显示第一次的内容,不会随着更新,也就是说组件不会重新渲染,登陆成功之后依然显示未登录,网上查找各种方式都没有效果,最后是改变量名的方法解决的,之前出错的代码是这样写的

return的时候props属性名和state属性名一样,但将props属性名换掉之后就正常了

转载于:https://www.cnblogs.com/zxh2459917510/p/11168315.html

在React使用this.props.dispatch调用后端接口,也需要借助redux-thunk间件来处理异步操作。下面是一个简单的例子: ```javascript // 定义一个异步action creator export const fetchData = () => { return async (dispatch) => { dispatch({ type: 'FETCH_DATA_REQUEST' }); try { const response = await fetch('/api/data'); const data = await response.json(); dispatch({ type: 'FETCH_DATA_SUCCESS', payload: data }); } catch (error) { dispatch({ type: 'FETCH_DATA_FAILURE', payload: error }); } }; } // 在组件使用dispatch调用异步action creator import { connect } from 'react-redux'; import { fetchData } from './actions'; class MyComponent extends React.Component { componentDidMount() { // 调用异步action creator this.props.dispatch(fetchData()); } render() { // 根据store的状态渲染组件 const { isLoading, data, error } = this.props; if (isLoading) { return <div>Loading...</div>; } else if (error) { return <div>Error: {error.message}</div>; } else { return ( <div> <ul> {data.map(item => ( <li key={item.id}>{item.name}</li> ))} </ul> </div> ); } } } const mapStateToProps = state => ({ isLoading: state.isLoading, data: state.data, error: state.error, }); export default connect(mapStateToProps)(MyComponent); ``` 在上面的例子,fetchData是一个异步action creator,它返回一个函数,这个函数接收一个参数:dispatch。在函数内部,我们可以使用dispatch方法来分发多个同步action,以更新store的状态。在组件,我们通过connect函数将store的状态映射为props属性,然后在componentDidMount使用this.props.dispatch调用该方法,以触发异步操作。当异步操作完成后,根据store的状态渲染组件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值