更新反应组件文本

时间:2017-04-26 07:49:26

标签: javascript reactjs redux

我有新的反应,我在提交表单后尝试更新一些反应组件。实际上,表单可以获得一些对象,一旦检索到对象,我们就可以在尝试获取对象时显示一些文本,例如"错误。或者"正在加载..."或"成功检索对象" 这是我的状态:

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;仍然显示。但我还没有进行搜索。 当我第一次来到表单页面时,如何才能使它不显示?

1 个答案:

答案 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,这样你就可以检查你是否进行了提取。