所以我正在设置一个具有多个状态属性的父级传递给子级。这是通过AJAX完成的。问题是,对于其中一些变量,响应可能会返回null
或undefined
。
$.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语法来做这样的事情。
答案 0 :(得分:0)
isMounted
中执行此操作,因此无需检查dataType
response.params.language
,则jQuery将为您执行json解析,数据将已成为对象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);
是假的(未定义),为什么设置它会有关系 - 因为你重写了非假值?你可以用许多普通的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