我有一个选择过滤器,我想按类别过滤我的产品。状态已更新,但 setState 的回调未执行。基本上我想在状态改变时立即更新我的列表。代码第 31 行没有在 try block 中执行,也没有捕获任何错误。
HTML
<div className="col-md-4 w-25 mt-3 ml-5">
<Select
onChange={this.handleChange}
value={selectedCategory}
placeholder="Select Category"
options={categories}
/>
</div>
JavaScript
handleChange = event => {
console.log(event.value);
this.setState({ selectedCategory: event.value }, () => {
try {
products.pipe(
map(products =>
products
.filter(
product => product.category === this.state.selectedCategory
)
.subscribe(products => {
console.log(products);
this.setState({
items: products,
isLoaded: true
});
})
)
);
} catch (error) {
console.error(error);
}
});
};
最佳答案
这段代码成功了,但仍然不知道为什么它不起作用。谁能解释一下吗?
handleChange = 事件 => {
this.setState(
{ selectedCategory: event.value },
this.showFilteredProducts
);
};
showFilteredProducts() {
const filterItems = products.pipe(
map(products =>
products.filter(
product => product.category === this.state.selectedCategory
)
)
);
filterItems.subscribe(products => {
this.setState({
items: products,
isLoaded: true
});
});
}
关于javascript - setState 不执行回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60285453/