【发布时间】:2021-03-26 02:30:14
【问题描述】:
我正在使用 redux,并且我想在我的应用程序从 api 捕获数据以及当我的 reducer 中有 null 数据时显示我的应用程序的加载状态
我试过了,但我没有加载文本
if (this.props.isSignedIn === true) {
return <div
style={{ textAlign: "right" }}>
<Link to='/streams/new' className='ui button primary'>
create new stream
</Link>
</div>
}
if (this.props.isSignedIn === false) {
return <div style={{ fontSize: '30px' }}>Not a user? sign in now, it's free </div>
}
if (this.props.isSignedIn ===null) {
<div>loading...</div>
}
}
这里是连接和mapstatetoprops函数
const mapStateToProps = state => {
return {
streams: Object.values(state.streams),
userId: state.auth.userId,
isSignedIn: state.auth.isSignedIn
};
};
export default connect(
mapStateToProps,
{ fetchStreams }
)(StreamList);
这里是减速器
import { SIGN_IN, SIGN_OUT } from '../actions/types';
const INTIAL_STATE = {
isSignedIn: null,
userId: null
};
export default (state = INTIAL_STATE, action) => {
switch (action.type) {
case SIGN_IN:
return { ...state, isSignedIn: true, userId: action.payload };
case SIGN_OUT:
return { ...state, isSignedIn: false, userId: null };
default:
return state;
}
};
这里是动作
export const signIn = userId => {
return {
type: SIGN_IN,
payload: userId
};
};
export const signOut = () => {
return {
type: SIGN_OUT
};
};
注意:
在 true 和 false 工作正常的情况下,除了 null【问题讨论】:
-
您是否将
isSignedIn变量设置为null? -
是的,它一开始是空的,随着时间的推移而变化
-
也发布你的 redux 操作和 reducer 来帮助你更好
-
我更新了我的问题,顺便说一句,它在真假情况下都能正常工作
标签: javascript reactjs redux