gpt4 book ai didi

javascript - React/Redux 等待商店更新

转载 作者:行者123 更新时间:2023-11-29 23:46:06 25 4
gpt4 key购买 nike

我目前正在使用 React 和 Redux 构建我的第一个应用程序。我构建了一些过滤器,当用户选择一个过滤器时,它将使用新的过滤器值更新商店,然后请求新的结果。

商店正在使用新的过滤器值进行更新,但提取请求是在商店完成更新之前发生的,因此返回了不正确的值。

如何在发出获取请求之前等待商店更新?

下面是我的代码...

const mapStateToProps = (state) => {
return {
dataFilter: state.dataFilter
}
};

class Filters extends Component {
constructor(props){
super(props);
this.handleChange = this.handleChange.bind(this);
}

handleChange(value, dispatcher){
dispatcher(value.props["data-attr"]);

this.props.resultsFetchData('/api/deals/?data=' + this.props.dataFilter);
}

render() {
const dataFilters = {
0: <span data-attr="0">Any</span>,
20: <span data-attr="1">1GB+</span>,
40: <span data-attr="2">2GB+</span>,
60: <span data-attr="5">5GB+</span>,
80: <span data-attr="10">10GB+</span>,
100: <span data-attr="99.99">Unltd</span>
};

return (
<div className="filters">
<div className="row">
<div className="col-sm-4 filters--slider">
<Slider
min={0}
marks={dataFilters}
step={null}
defaultValue={this.props.dataFilter}
onChange={e => {this.handleChange(dataFilters[e], this.props.setDataFilter)}} />
</div>
</div>
</div>
);
}
}

export default connect(mapStateToProps, {setDataFilter, resultsFetchData})(Filters)

Filters.propTypes = {
dataFilter: PropTypes.string
}

最佳答案

使用 componentWillReceiveProps 对我来说是一个解决方案......

componentWillReceiveProps(nextProps){
if(nextProps.dataFilter !== this.props.dataFilter){
this.props.resultsFetchData('/api/deals/?data=' + nextProps.dataFilter);
}
}

handleChange(value, dispatcher){
dispatcher(value.props["data-attr"]);
}

关于javascript - React/Redux 等待商店更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44069816/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com