只有在事物存在的情况下才能反应setState?

时间:2016-01-27 15:07:46

标签: javascript jquery reactjs

所以我正在设置一个具有多个状态属性的父级传递给子级。这是通过AJAX完成的。问题是,对于其中一些变量,响应可能会返回nullundefined

$.post(this.props.source, function(data) {

  // Parse the response
  var response = JSON.parse(data);

  if (this.isMounted()) {
    this.setState({

      // Set initial state vars
      minPrice:         response.resultDetails.minPrice,
      maxPrice:         response.resultDetails.maxPrice,
      language:         response.params.language,
      filters:          response.params.filters

    });
  }
}.bind(this));

我怎么能说if response.params.language, set language之类的话?我无法弄清楚React语法来做这样的事情。

1 个答案:

答案 0 :(得分:0)

  1. 您应该在isMounted中执行此操作,因此无需检查dataType
  2. 如果您指定response.params.language,则jQuery将为您执行json解析,数据将已成为对象
  3. 如果var newState = { minPrice: response.resultDetails.minPrice, maxPrice: response.resultDetails.maxPrice, }; if (response.params.language) { newState.language = response.params.language; } if (response.params.filters) { newState.filters = response.params.language; } this.setState(newState); 是假的(未定义),为什么设置它会有关系 - 因为你重写了非假值?
  4. 你可以用许多普通的JS方式做到这一点......这与React无关。 e.g:

    this.setState({
          minPrice: response.resultDetails.minPrice,
          maxPrice: response.resultDetails.maxPrice,
          language: response.params.language || this.state.language,
          filters: response.params.filters  || this.state.filters
    });
    

    或:

    table