我有新的反应,我在提交表单后尝试更新一些反应组件。实际上,表单可以获得一些对象,一旦检索到对象,我们就可以在尝试获取对象时显示一些文本,例如"错误。或者"正在加载..."或"成功检索对象" 这是我的状态:
interface IState {
inputText: string;
isFetching: boolean;
isError: boolean;
cvs: CvModel[];
}
我得到了这段代码,以便呈现我的表单和文字:
export default () => (
<div>
<FormFindCvContainer />
<hr/>
<DetailCvSearchContainer />
</div>
);
触发提交事件后,我得到了这个减速器:
export default function cvs(state: IState = initialState, action: any) {
let newState: IState;
switch (action.type) {
case REQUEST_FIND_CV_BY_NAME:
newState = {...state};
newState.inputText = action.name;
newState.isFetching = true;
newState.isError = false;
return newState;
case RECEIVE_CV_BY_NAME:
newState = {...state};
newState.isFetching = false;
newState.isError = false;
newState.cvs = [...state.cvs, action.cv];
return newState;
case ERROR_RECEIVE_CV_BY_NAME:
newState = {...state};
newState.isFetching = false;
newState.isError = true;
return newState;
default:
return state;
}
}
我终于得到了显示文字的代码:
class DetailCvSearchContainer extends React.Component<IProps, undefined> {
render() {
let result = <div></div>;
if (this.props.isFetching) {
result = <h2>Loading...</h2>;
} else if (this.props.isError) {
result = <div>No CV</div>;
}
return result;
}
}
如果我试图找到一些简历并且它不存在它会显示&#34;没有简历&#34;。 问题是,如果我回到主页并转到表单查找简历,文字&#34;没有简历&#34;仍然显示。但我还没有进行搜索。 当我第一次来到表单页面时,如何才能使它不显示?
答案 0 :(得分:0)
class DetailCvSearchContainer extends React.Component<IProps, undefined> {
render() {
let result = <div></div>;
if (this.props.isFetching) {
result = <h2>Loading...</h2>;
} else if (this.props.isError) {
result = <div>No CV</div>;
} else if(//check if cv is empty object or something){
result = <div>Search for CV</div>
}
return result;
}
}
这应该有效。我不知道你的初始状态是什么,但你可以将cv字段设置为null,这样你就可以检查你是否进行了提取。