使用React在按钮单击事件中未更新状态值

时间:2018-12-24 07:29:37

标签: reactjs redux

使用React JS单击按钮后,状态值不会立即更新。我声明了一个状态变量名称为order。然后,我在订单状态中存储了一些值,但是我单击了按钮,订单值未更新。

单击按钮状态顺序为空数组后,我想更新order

   onPlaceOrderItem(event) {
    let packageData = this.state.order;
    this.setState({
        order: isEmptyData
    })
    const { dispatch } = this.props;
    dispatch(itemActions.placeOrderItems(packageData))
}

1 个答案:

答案 0 :(得分:0)

this.setState({ order: isEmptyData })在被调用时不会突变this.state.orderthis.state.order将在以后进行变异。

State updates may be asynchronous。因此,在分发packageData时,您不应指望this.state.order(又名itemActions.placeOrderItems(packageData))。

可以为解决方案提供更新后的order值到setStateplaceOrderItems

onPlaceOrderItem(event) {
  const { dispatch } = this.props;

  const order = isEmptyData;
  this.setState({order})
  dispatch(itemActions.placeOrderItems(order))
}

但是您不能假定减速器状态和组件状态将同时更新。

无论如何,如果在化简器中对order进行了突变,则应将化简器中的order值注入到您的组件中,并删除组件状态。