React redux初始化功能,无论状态变化如何
React-redux initialization function regardless of state changes
我真的不知道如何尽可能精确地描述。在异步调用之后,我需要某种初始化函数,不管以后状态是否更改,它都只会被调用一次。
我有一个组件,当它安装时,我使用action creator发出异步请求以获得一些默认值,稍后我还调用somethingElse()
,这使我的UI再次重新呈现,因为状态已更新:
这是动作创造者:
export function requestDefaults(){
return {
type: REQUEST_DEFAULTS,
payload: axios.get(ROOT_URL),
};
}
export function somethingElse(){
return {
type: SOME_OTHER,
payload: "Whatever",
};
}
还有我的减速器:
switch (action.type) {
case REQUEST_DEFAULTS:
return action.payload.data;
break;
case SOME_OTHER:
return action.payload;
break;
default:
return state;
}
在我的组件中——当它被攻击时,我发出异步请求,当我收到响应时,我使UI可见——在这种简化的情况下,是一个按钮,它调用somethingElse
:
componentDidMount(){
this.props.requestDefaults();
}
render(){
// Have received async data show button - THIS NEEDS TO BE ONLY ONCE
if( this.props.defaults.data !== undefined ){
<a onClick={ this.props.someThingElse }>do it</a>
}
}
// REQUEST_DEFAULTS & SOME_OTHER
function mapStateToProps( { defaults, someOther} ){
return { defaults, someOther}
}
现在,每当我调用this.props.someThingElse
时,都会对状态进行更改,在我的render()
函数中,按钮会再次被重新渲染,这就是问题所在——当我接收异步数据时,我只需要渲染一次。但现在状态更新了,render()
再次被调用,因为现在我有了this.props.defaults.data
,我的按钮再次被重新呈现,但我需要在第一次异步调用后只做一次,而不是在以后状态更改时。。。
您可以使用shouldComponentUpdate方法,并且只有在默认数据更改时才能重新渲染。在您的情况下,默认数据只更改一次(默认情况下,在下一步有一些数据时为空),因此渲染方法将只调用一次。
shouldComponentUpdate(nextProps, nextState) {
return this.props.defaults.data !== nextProps.this.props.defaults.data;
}
相关文章:
- React redux初始化功能,无论状态变化如何
- 检测Ionic中特定的应用程序状态变化
- ReactJS-这个状态中的数组在删除时被正确更新,但结果是't,直到以后的状态发生变化
- 消除淘汰中引导程序开关状态变化的歧义
- 反应组件交互和全局状态变化
- 根据单选按钮的状态变化使儿童内容出现/消失
- 观察angular ui路由器的状态变化
- 如何与Redux沟通React组件之间的UI状态变化
- html5事件监听器详细节点状态变化
- 角度/离子谷歌地图的状态变化
- ReactJS -检测状态变化的问题
- 处理ReactJs中的状态变化
- 按钮循环3个状态变化
- 每次状态变化时的离子运行函数
- FP:在没有实际状态变化的情况下反映状态
- ReactJS:如何测试状态变化
- 发生状态变化时不应用ng类
- 动态jQuery CSS具有三状态滚动背景位置根据状态变化
- 承诺后的角度状态变化
- 是否有管理事件的“量子状态变化”的有用模式?(特别是在JavaScript中)