我有一个有航班的州,并且有一个滑块可以更改最高价格以更改航班元素的可见性。
maxpriceFilter() {
var flightOffer = this.state.flightOffer;
var sliderPrice = this.state.sliderPrice;
for (var i = 0; i < flightOffer.length; i++) {
if( flightOffer[i].price > sliderPrice) {
this.setState(
{[flightOffer[i].hiddenprice] : true}
);
};
}
这段代码在状态的根中添加了一个状态为 true 的未定义字段。除了使用计算字段之外,我找不到任何最佳实践。但我也无法让计算字段工作。
有人可以帮我吗?
您不想在循环中执行 setState 调用,这将使反应组件渲染多次。构建一个新的状态对象并调用一次 setState。您也不想通过 if 语句将其过滤掉,而是将以前的值设置为隐藏:
maxpriceFilter() {
var flightOffer = this.state.flightOffer;
var sliderPrice = this.state.sliderPrice;
var newState = {};
for (var i = 0; i < flightOffer.length; i++) {
newState[flightOffer[i].hiddenprice] = flightOffer[i].price > sliderPrice;
}
this.setState(newState);
// ...
}
如果您仍然遇到问题,可能是隐藏价格属性不是您所期望的?可能还需要发布您的 render() 函数。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)