componentWillReceiveProps()

in genie-ui/src/main/web/scripts/components/SearchForm.js [35:66]


  componentWillReceiveProps(nextProps) {
    const { query } = nextProps;
    let updateState = false;
    // check if query <-> form state are in sync
    // if not then update form state
    for (const key of Object.keys(query)) {
      if (!this.props.query || query[key] !== this.props.query[key]) {
        updateState = true;
        break;
      }
    }
    if (updateState) {
      const { formFields } = this.getDefaultFormState(nextProps);
      for (const name of Object.keys(formFields)) {
        // update form fields from query object
        if (query[name]) {
          if (name === "sort") {
            formFields.sortOrder.value = query[name].split(",").pop();
          }
          formFields[name].value = query[name];
        } else if (
          formFields[name].queryMapping &&
          this.includes(formFields[name].queryMapping, query)
        ) {
          const { mapper, queryMapping } = formFields[name];
          const queryValues = queryMapping.map(x => query[x]);
          formFields[name].value = queryValues.map(mapper);
        }
      }
      this.setState({ formFields });
    }
  }